dram.me

CLIPS错误处理

补遗

  1. 在规避使用salience时,forall很有价值,可以基于此实现对批量任务的等待动作,类似于多线程编程中的join概念。—— 2017-09-04

  2. 在《专家系统原理与编程》中,作者提到,专家系统的其中一个特点是“可靠性”,这也可能是CLIPS采用这样一种错误处理方式的原因之一。—— 2017-09-05

不同于其他高阶编程语言,CLIPS并不支持异常机制,这导致在错误处理上,CLIPS有些捉襟见肘。可供利用的只有(exit)退出程序、以及(halt)停止规则执行。

但CLIPS和其他语言一大不同点在于数据驱动。通过合理的程序和数据组织,可以依托数据来实现流程控制。

举例来说,通过使用流程控制的fact,可以限制相应规则的执行。如果需要退出程序,则不生成相应fact,使得(run)提前结束即可。

但这一机制和salience机制存在冲突,一旦程序中用salience控制执行流程,则简单的不产生fact无法终止部分已具备执行条件但salience较低的规则的执行,这时需要借助(halt),或者利用流程控制fact替代salience的使用。