gpt4 book ai didi

prolog - 尽管在序言中使用了 catch,为什么这仍然会引发异常?

转载 作者:行者123 更新时间:2023-12-02 04:44:07 26 4
gpt4 key购买 nike

当使用这段代码时,引发了这个异常并且没有返回失败:

在 Sicstus Polog 中:

number_codes/2 中的语法错误!数字句法!在第 0 行

在 SWI-Prolog 中:

错误:number_chars/2:语法错误:非法数字

number_codes(Number,"m"),
catch(number_codes(Number,List),error(syntax_error(_),_), fail).

如何让它在此异常上返回失败。

最佳答案

捕获语法错误的 ISO 方法是这样写:

catch(number_codes(Number,"m"),error(syntax_error(_),_), fail).

第一个参数是要保护的目标,第二个参数是要捕获的模式。在这种情况下,您想捕获一个错误。错误都是 error(E,_) 的形式,其中第一个参数是具体的错误项,在本例中为 syntax_error(_)。第二个参数是实现定义的。所以你不能依赖它的精确格式。

从不 简单地捕捉所有建议(如@CapelliC)。以这种方式,您可能会无意中隐藏一些意想不到的错误。

关于prolog - 尽管在序言中使用了 catch,为什么这仍然会引发异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20171756/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com