You can set an exception handler to treat user code exceptions generated during rule execution.
At the rule level, you use the IlrContext.setExceptionHandler method to set the handler. This handler is supported only by the RetePlus algorithm. The sequential and Fastpath algorithms support the handler only at the rule flow level and you set it by using the IlrContext.setRuleflowExceptionHandler method. You can set both at the same time to cover all cases.
To set an exception handler:
IlrExceptionHandler exceptionHandler = new IlrExceptionHandler()
{
public boolean handleException(IlrUserRuntimeException ex)
{
if (ex.isInConditions())
return false;
else
throw ex;
}
};
engine.setExceptionHandler(exceptionHandler);
engine.setRuleflowExceptionHandler(exceptionHandler);
During execution of a RetePlus engine or task, the execution continues if an exception handler is used. For the other algorithms and the rule flow, the execution is stopped and the rule flow exception handler, if any, is called.