无法获取异常消息

时间:2011-08-23 23:30:02

标签: exception prolog

我正在使用swi-prolog并尝试使用异常处理。我有一个像

这样的系统
writeAndFail(message)
    :- write(message)
    , fail.

pred(arg1, arg2)
    :- catch(
        real_pred(arg1, arg2), 
        Exception,
        writeAndFail(Exception)
    ).

real_pred的正文中,我直接抛出一个字符串,例如throw('message')。对pred(对一个合适的测试用例)的调用抛出异常并正确捕获它,但是消息永远不会被写出来。如何更改此代码以便打印异常消息?

1 个答案:

答案 0 :(得分:1)

您正在使用小写字词,看起来您想要变量。

谓词message中的原子writeAndFail是,并且将始终是文字原子message。除了文字原子message之外,它不会与其他任何东西统一 调用writeAndFail(hello)将立即失败,因为没有匹配的谓词。 对于arg1中的arg2pred也是如此。

如果您使用文字参数调用pred arg1arg2,并且如果throw真的抛出文字'message'那么这些值应该统一,您应该看到预期结果。

否则,用大写字母开始变量。