我有一个包含
solve
调用的谓词。当它没有解决方案时,它会抛出 *** error(failed,main/0)
。是否可以捕获此错误?阅读示例文件exs.pi
我认为以下内容可以做到这一点,但事实并非如此。
import sat.
main =>
catch(unsatisfiable,E,$handler(E)).
handler(_) => printf("Failed").
unsatisfiable =>
{A,B} :: 1..2,
A+B #= 1,
solve({A,B}).
我使用的是Picat 3.6版本。
在写这个问题时,我做了一些更多的实验,并意识到
solve
只是一个谓词,例如比较运算符,因此可以放入 if
语句中,如下所示:
import sat.
main =>
if unsatisfiable then
S = "Success"
else
S = "Failed"
end,
printf(S).
unsatisfiable =>
{A,B} :: 1..2,
A+B #= 1,
solve({A,B}).