私たちは詳細にDroolsの例外処理を記述してみましょう. Droolsのでは, デフォルトの例外ハンドラとして知られています “その結果例外ハンドラ”. それは次のような最小限の情報を提供します.
A) ルール
B) 例外が起きた場合には
C言語) Javaスタックトレースと原因
Droolsのは、また、独自のカスタム例外を書くことができhandler.The “ConsequenceException” 拡張 “java.lang.RuntimeException”.コンストラクタのシグネチャは次のとおりです.
ConsequenceException(Throwable rootCause, ルールルール)
利用可能な唯一の方法があります “公共のルールgetRule()”.
ザ・ “ConsequenceExceptionHandler” 使用可能なカスタムhandler.The唯一の方法を記述するために実装されたインタフェースは、以下の通りである、それはカスタム処理を行うために上書きされています.
空洞handleException(アクティベーションの活性化,
WorkingMemoryはWorkingMemoryは,
例外例外)
サンプルコードが以下に与えられます :-
import java.io.Externalizable;
import org.drools.runtime.rule.ConsequenceExceptionHandler;
public class CustomConsequenceExceptionHandler
implements ConsequenceExceptionHandler, Externalizable {
public void handleException( Activation activation,
WorkingMemory workingMemory,
Exception exception ){
// Write custom handling code here.
}
}
カスタム処理を改善するために、 “RuntimeException” また、拡張することができます.
ルールファイルを識別するための (.DRL) コンパイルエラー, “hasErrors()” 方法 “KnowledgeBuilder” クラスを使用することができます. メソッドを実装するためのサンプル・コード・スニペットを以下に示します.
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
kbuilder.add(ResourceFactory.newFileResource("D:/Workspace/TestProj/src/Test.drl"), ResourceType.DRL);
場合 (kbuilder.hasErrors()) {
System.out.printlnは(kbuilder.getErrors().toStringメソッド());
新しいのRuntimeExceptionをスロー(“コンパイルすることができません”Test.drl ”.”);
}