我想打印一条消息并停止对谓词的评估。我该怎么做?
答案 0 :(得分:2)
看一下这个link,其中描述了Prolog中的catch / 3和throw / 1机制。
可以使用此机制抛出异常或处理异常。
示例(在网站上给出)是:
p:- true.
p:- throw(b).
q:- catch(p, B, write('hellop')), r(c).
r(X) :- throw(X).
然后是电话:
?- catch(p, X, (write('error from p'), nl)).
将说明ecxeption处理。
答案 1 :(得分:1)
我玩了一些我发现的其他例子。这可能很有用。
p :- throw(b).
r(X) :- throw(X).
q:- catch(p, B, format('Output1: Error from throwing p')), r(B).
catch(throw(exit(1)), exit(X), format('Output: `w', [X])).
Output: 1
1 is thrown to catcher 'exit(X)' and recovered by format('Output: ~w', [X])),
catch(p, C, format('hellop')).
Output: hellop
p throws 'b' which is recovered by writing 'hellop'
catch(q, C, format('Output2, Recovering q: helloq ')).
Output1: Error from throwing p
Output2, Recovering q: helloq
本