在SWI Prolog中引发错误

Koe*_*oen 6 prolog

我想打印一条消息并停止对谓词的评估.我怎么做?

Vin*_*nie 3

看一下这个链接,其中描述了 Prolog 中的 catch/3 和 throw/1 机制。

使用此机制可以引发异常或处理异常。

示例(网站上给出)是:

  p:- true.
  p:- throw(b).
  q:- catch(p, B, write('hellop')), r(c).
  r(X) :- throw(X).
Run Code Online (Sandbox Code Playgroud)

然后调用:

 ?- catch(p, X, (write('error from p'), nl)).
Run Code Online (Sandbox Code Playgroud)

将说明异常处理。

  • 这实在是太多了。我只想显示一条消息并结束顶级谓词(如果你碰巧说 Haskell,则与 Haskell 的“错误”不同)。当我没有捕获异常时,异常会打印丑陋的处理消息。 (6认同)