无法在序言中将 catch/3 用于 tcp_connect

Unable to use catch/3 for tcp_connect in prolog

我想检查服务器是否正在侦听,为此我使用下面显示的代码。

:- 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 has stopped working' 这迫使我关闭序言控制台。任何帮助表示赞赏。

我找到了问题的答案。我使用的是稳定版本 7.2.3。使用开发版本 7.3.2 解决了我的问题。