Auf Englisch lesen

Freigeben über


Ausnahmebehandlung

Die RuleEngine-Klasse verfügt über die Eigenschaft CompensationHandlerInfo, die wiederum über zwei Eigenschaften verfügt: CompensationHandler und UserData. Die CompensationHandler-Eigenschaft ist vom Typ RuleEngineCompensationHandler, und die UserData-Eigenschaft ist vom Typ Object. Die Definition für RuleEngineCompensationHandler lautet wie folgt:

public delegate bool RuleEngineCompensationHandler(  
   Exception ex,  
   object userData  
);  

Der Regel-Engine-Consumer gibt den Handler und die Benutzerdaten für die Regel-Engine an, indem er die CompensationHandlerInfo-Eigenschaft der RuleEngine-Klasse verwendet. Der Handler muss dieselbe Signatur wie der RuleEngineCompensationHandler-Delegat aufweisen. Im Fall einer Laufzeitausnahme ruft die Engine den Handler auf und übergibt die Ausnahme und die vordefinierten Benutzerdaten als Parameter an den Handler. Wenn der Handler zurückgibt true, setzt die Regel-Engine die Verarbeitung fort. Andernfalls bricht die Regel-Engine die Verarbeitung ab und gibt die ursprüngliche Ausnahme an den Benutzer zurück. Wie Sie sehen können, können Sie diesen Ausnahmebehandlungsmechanismus nur verwenden, wenn Sie die Richtlinie mithilfe der RuleEngine.Execute-Methode aufrufen.

Wenn Sie die Policy.Execute-Methode zum Ausführen einer Richtlinie verwenden, müssen Sie einen try-catch-Block verwenden, um alle Ausnahmen abzufangen, die während der Ausführung der Richtlinie von der Regel-Engine generiert wurden.

Wenn Sie das Shape Aufrufregeln verwenden, um eine Richtlinie auszuführen, verwenden Sie den Block Catch Exception für das Shape Bereich , um eine Ausnahme abzufangen, die während der Ausführung der Richtlinie von der Regel-Engine ausgelöst wird.

Weitere Informationen

Hinzufügen eines Blocks vom Typ „Ausnahmenerfassung“