영어로 읽기

다음을 통해 공유


예외 처리

RuleEngine 클래스에는 CompensationHandlerInfo 속성이 있으며, 이 속성에는 두 가지 속성인 CompensationHandlerUserData가 있습니다. CompensationHandler 속성은 RuleEngineCompensationHandler 형식이고 UserData 속성은 Object 형식입니다. RuleEngineCompensationHandler에 대한 정의는 다음과 같습니다.

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

규칙 엔진 소비자는 RuleEngine 클래스의 CompensationHandlerInfo 속성을 사용하여 규칙 엔진에 대한 처리기 및 사용자 데이터를 지정합니다. 처리기는 RuleEngineCompensationHandler 대리자와 동일한 서명을 가져야 합니다. 런타임 예외가 있는 경우 엔진은 핸들러를 호출하고 예외 및 미리 정의된 사용자 데이터를 매개 변수로 핸들러에 전달합니다. 처리기가 를 반환 true하는 경우 규칙 엔진은 처리를 계속합니다. 그렇지 않으면 규칙 엔진은 처리를 중단하고 원래 예외를 사용자에게 반환합니다. 여기서 볼 수 있듯이 RuleEngine.Execute 메서드를 사용하여 정책을 호출하는 경우에만 이 예외 처리 메커니즘을 사용할 수 있습니다.

Policy.Execute 메서드를 사용하여 정책을 실행하는 경우 try-catch 블록을 사용하여 정책을 실행하는 동안 규칙 엔진에서 생성된 예외를 catch해야 합니다.

호출 규칙 셰이프를 사용하여 정책을 실행하는 경우 범위 셰이프에 대한 Catch 예외 블록을 사용하여 정책을 실행하는 동안 규칙 엔진에서 발생한 예외를 catch합니다.

참고 항목

예외 Catch 블록을 추가하는 방법