首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在PyClips中传播Clips错误消息

在PyClips中传播Clips错误消息
EN

Stack Overflow用户
提问于 2010-09-14 16:05:56
回答 1查看 574关注 0票数 0

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

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

以下是一个浓缩的版本:

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

代码语言:javascript
复制
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中,带有一条无用的错误消息:

代码语言:javascript
复制
python
>>> import clips
>>> clips.BuildRule('myrule','(myfact 123)','(bind ?prob (* (min 1 2)))','')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.6/dist-packages/clips/_clips_wrap.py", line 2839, in BuildRule
    _c.build(construct)
_clips.ClipsError: C08: syntax error, or unable to parse expression

我怎样才能让PyClips给我剪辑抛出的真正错误?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-07-21 23:04:25

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

代码语言:javascript
复制
engine = clips.Environment()
engine.Reset()
engine.Clear()
try:
    engine.Load(os.path.abspath(rule_file))
except clips.ClipsError:
    logging.error(clips.ErrorStream.Read())
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3710690

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档