簡體   English   中英

在PyClips中傳播剪輯錯誤消息

[英]Propagating Clips Error Messages in PyClips

我發現用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中,出現了無用的錯誤消息:

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給我Clips拋出的真正錯誤?

捕獲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())

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM