C #을 비정상적으로 통합 된 접근 방식

예외 통합 처리

사용하여 시스템;
사용 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 (정보);
        }

 

추천

출처www.cnblogs.com/aisa-thanatos/p/10980552.html