예외 통합 처리
사용하여 시스템; 사용 System.Collections.Generic 단계; 사용 System.Text 단계; 네임 스페이스 WUtility.Common { 공공 클래스 ActionHelper { 개인 정적 액션 <예외> _dealException; 공용 정적 이벤트 작업 <예외> DealException는 { {_dealException 추가 + = 값; } {제거 하는 경우 (! _dealException = null이 ) _dealException을 - = 값을; } } /// <요약> ///일반 예외 처리 /// </ 요약> /// <PARAM NAME = "액션"> 이벤트 로직에 대응하는 </ PARAM> /// <PARAM NAME = "상태"> 매개 </ PARAM> 공공 정적 무효 SafeInvoke (작업이 < 개체 > 액션, 객체 상태) { 은 try { IF (액션 == null이 ) 반환 ; action.Invoke (주); } 캐치 (예외 EX) // 예외의 종류 취급 구분하여 { IF (_dealException를!= 널 (null)) _dealException (예); } } /// <요약> /// 通用的异常处理 /// </ 요약> /// <PARAM NAME = "방법"> </ PARAM> /// <PARAM NAME = "OBJ"> </ PARAM> 공공 정적 무효 SafeInvoke (위임 방법, PARAMS 오브젝트 [] OBJ) { 시도 { 경우 (방법 == null의 ) 복귀 ; 경우 (obj.Length의 == 0 ) method.DynamicInvoke ( 널) 다른 IF (obj.Length == 1. ) method.DynamicInvoke (OBJ [ 0 ]); 다른 IF (obj.Length == 2 ) method.DynamicInvoke (OBJ [ 0 ]의 OBJ [ 1. ]); } 캐치 ( EX 예외) // 예외 처리의 유형을 구별함으로써 { IF (_dealException! = null의 ) _dealException (EX); } } } }
사용 예 :
전용 공간 button20_Click ( 오브젝트 송신자있는 EventArgs E) { ActionHelper.DealException + = (OBJ) => { VAR szInfo = obj.Message; MessageBox.Show (szInfo); }; VAR의 K = 20 - 20 ; ActionHelper.SafeInvoke ((OBJ) => {MessageBox.Show ( " SafeInvokeAcion ' + ( 50 / K))} 는 null ); } 개인 무효 button21_Click ( 객체송신자있는 EventArgs E) { ActionHelper.SafeInvoke ( 새로운 TestInvoke (TestSafeInvokeDelegate), " 12345 " , " 678910 " ); } 개인 위임 무효 TestInvoke ( 문자열 szInfo, 문자열 szInfo2); 개인 무효 TestSafeInvokeDelegate ( 문자열 szInfo, 문자열 szInfo2) { var에 정보 = szInfo + " ^ " + szInfo2; MessageBox.Show (정보); }