Exception Can';无法获取异常消息
我正在使用swi prolog并尝试使用异常处理。我有一个这样的系统Exception Can';无法获取异常消息,exception,prolog,Exception,Prolog,我正在使用swi prolog并尝试使用异常处理。我有一个这样的系统 writeAndFail(message) :- write(message) , fail. pred(arg1, arg2) :- catch( real_pred(arg1, arg2), Exception, writeAndFail(Exception) ). 在real\u pred的主体中,我直接抛出一个字符串,例如throw(
writeAndFail(message)
:- write(message)
, fail.
pred(arg1, arg2)
:- catch(
real_pred(arg1, arg2),
Exception,
writeAndFail(Exception)
).
在
real\u pred
的主体中,我直接抛出一个字符串,例如throw('message')
。对pred的调用(在合适的测试用例上)抛出异常并正确捕获它,但消息永远不会被写出。如何更改此代码以打印异常消息?您使用的是小写术语,看起来您需要变量
谓词writeAndFail
中的atom消息
是,并且将始终是文字atom消息
。它将不会与文字atom消息
以外的任何内容统一调用
writeAndFail(hello)
将立即失败,因为没有匹配的谓词。
pred
中的arg1
、arg2
也是如此
如果使用文字参数调用pred
,arg1
和arg2
并且如果throw真的抛出文字“message”
,那么这些值应该统一起来,您应该会看到预期的结果
否则,用大写字母开始变量。您知道catch谓词吗(我认为它是SWI Specfic)?它在出错时调用第一个参数(第二个参数可以捕获特定的错误),它调用第三个参数,因此我认为没有问题,但在
writeAndFail
中,您是对的。