在PyClips中传播Clips错误消息

2024-04-18 02:57:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我发现用PyClips开发非常困难,因为它似乎用一个通用的“语法错误”消息替换Clips抛出的有用错误消息。这使得在使用PyClips时在大型代码库上进行调试非常费力,而且几乎不可能。在

考虑下面的例子。我写了一个非常大的表达式,其中包含乘法运算符,但我错误地忘记了添加第二个参数。PyClips没有简单地告诉我缺少一个参数,而是告诉我有一个语法错误。我花了1秒钟才纠正的,我花了5分钟才纠正,因为我在我的大表情中寻找错误。在

下面是一个浓缩版:

在剪辑中,有一条有用的错误消息:

clips
CLIPS> (defrule myrule "" (myfact 123) => (bind ?prob (* (min 1 2))))
[ARGACCES4] Function * expected at least 2 argument(s)

ERROR:
(defrule MAIN::myrule ""
   (myfact 123)
   =>
   (bind ?prob (* (min 1 2))

在PyClips中,有一条无用的错误消息:

^{pr2}$

如何让PyClips给出Clips抛出的错误?在


Tags: 代码消息参数bind错误min例子语法错误
1条回答
网友
1楼 · 发布于 2024-04-18 02:57:40

捕获ClipsError,然后阅读ErrorStream以获取详细信息。例如:

engine = clips.Environment()
engine.Reset()
engine.Clear()
try:
    engine.Load(os.path.abspath(rule_file))
except clips.ClipsError:
    logging.error(clips.ErrorStream.Read())

相关问题 更多 >