C#の異常な統一されたアプローチ

例外統一治療

使用してシステムを。
使用してSystem.Collections.Genericを。
使用してSystem.Textのを。

名前空間WUtility.Common 
{ 
    パブリック クラスActionHelper 
    { 
        プライベート 静的なアクション<例外> _dealException。
        パブリック 静的 イベントアクション<例外> DealException 
        { 
            {_dealExceptionを追加 + = 値。} 
            {削除する場合(!_dealException = ヌル)_dealException - = 値。} 
        } 

        ///  <要約> 
        ///一般的な例外処理
         ///  </要約> 
        ///  <PARAM NAME = "アクション"> イベント・ロジックに対応する</ param>の
        ///  <PARAM NAME = "国家"> パラメータ</ param>の
        公共の 静的な 無効 SafeInvoke (アクション< オブジェクト >アクション、オブジェクトの状態)
        { 
            試み
            { 
                IF(アクション== nullのリターン; 
                action.Invoke(州); 
            } 
            キャッチ(例外EX)// 例外処理の種類を区別することにより、
            {
                 IF(_dealExceptionを!= nullを
                    _dealException(EX)。
            } 
        } 

        ///  <要約> 
        /// 通用的异常处理 
         ///  </要約> 
        ///  <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電子)
        { 
            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電子)
        { 
            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