[英]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.