gpt4 book ai didi

Prolog 错误捕获

转载 作者:行者123 更新时间:2023-12-04 00:48:55 26 4
gpt4 key购买 nike

给定:

fruitid('Apple', 'Granny Smith', 1).
fruitid('Pear', 'Bartlett', 2).

如果我有这个条款

type_of_fruit(ID):-
fruitid(Fruit, _, ID), write(Fruit).

我怎样才能实现捕获错误输入的方法?

例如

fruitid(5).

谢谢。

作为

最佳答案

设置 Prolog 标志并使用 Catch/3

假设 SWI Prolog

1) prolog_flags 可以改变错误行为。首先让系统捕获错误并报告它。 unknown 标志用于未知谓词,例如 fruitID/1

set_prolog_flag(report_error,true).
set_prolog_flag(unknown,error).

现在当使用了错误的谓词元数时,应该会出现这样的错误信息:

?- fruitid(5).
ERROR: toplevel: Undefined procedure: fruitid/1 (DWIM could not correct goal)

2) 在代码中捕获这样的异常,将目标包装在 catch/3 谓词中。来自 1) 的设置仍然是必需的。这是在代码中捕获未定义谓词的方法,或为此捕获任何异常。将 format/3 替换为所需的处理程序:

while_running_some_program:-
catch(foodid(5),
error(Err,_Context),
format('You done goofed! ~w\n', [Err])),
rest_of_code.

关于Prolog 错误捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2396187/

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