Невозможно использовать catch/3 для tcp_connect в прологе

Я хочу проверить, слушает ли сервер или нет, и для этого я использую код, показанный ниже.

:- use_module(library(socket)).

goal(IP,Port,Sock):-
    tcp_socket(Sock),
    tcp_connect(Sock,IP:Port).

main(IP,Port):-
    catch(goal(IP,Port,Sock),error(X,Y),writeln('Error')).

Я вызываю основную часть из консоли. Я пытался использовать catch/3, чтобы поймать ошибку, но мой код всегда зависает, и я получаю swipl ошибки операционной системы . exe перестал работать ', что заставляет меня закрыть консоль пролога. Любая помощь приветствуется.

1 ответ

Решение

Я нашел ответ на мою проблему. Я использовал стабильную версию 7.2.3. Использование разрабатываемой версии 7.3.2 решило мою проблему.

Другие вопросы по тегам