4
我想打印一條消息並停止對謂詞的評估。我怎麼做?在SWI Prolog中引發錯誤
我想打印一條消息並停止對謂詞的評估。我怎麼做?在SWI Prolog中引發錯誤
看看這個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處理。
我玩了一些我發現的其他例子。這可能是有用的。
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
本
這是很過分。我只是想顯示一條消息並結束頂級謂詞(如果你碰巧講Haskell,那就和Haskell的'錯誤'不同)。例外情況打印醜陋的處理消息時,我不cacth他們。 – Koen 2011-03-31 14:08:21