zoukankan      html  css  js  c++  java
  • C# 异常统一处理方式

    Exception 统一处理

    using System;
    using System.Collections.Generic;
    using System.Text;
    
    namespace WUtility.Common
    {
        public class ActionHelper
        {
            private static Action<Exception> _dealException;
            public static event Action<Exception> DealException
            {
                add { _dealException += value; }
                remove { if (_dealException != null) _dealException -= value; }
            }
    
            /// <summary>
            /// 通用的异常处理
            /// </summary>
            /// <param name="action">对应事件逻辑</param>
            /// <param name="state">参数值</param>
            public static void SafeInvoke(Action<object> action, object state)
            {
                try
                {
                    if (action == null) return;
                    action.Invoke(state);
                }
                catch (Exception ex)//按异常类型区分处理
                {
                    if (_dealException != null)
                        _dealException(ex);
                }
            }
    
            /// <summary>
            /// 通用的异常处理 
            /// </summary>
            /// <param name="method"></param>
            /// <param name="obj"></param>
            public static void SafeInvoke(Delegate method, params object[] obj)
            {
                try
                {
                    if (method == null) return;
                    if (obj.Length == 0)
                        method.DynamicInvoke(null);
                    else if (obj.Length == 1)
                        method.DynamicInvoke(obj[0]);
                    else if (obj.Length == 2)
                        method.DynamicInvoke(obj[0], obj[1]);
                }
                catch (Exception ex)//按异常类型区分处理
                {
                    if (_dealException != null)
                        _dealException(ex);
                }
            }
        }
    }

    使用示例:

            private void button20_Click(object sender, 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);
            }
    
            private void button21_Click(object sender, EventArgs e)
            {
                ActionHelper.SafeInvoke(new TestInvoke(TestSafeInvokeDelegate), "12345", "678910");
            }
    
            private delegate void TestInvoke(string szInfo, string szInfo2);
            private void TestSafeInvokeDelegate(string szInfo, string szInfo2)
            {
                var info = szInfo + "^" + szInfo2;
                MessageBox.Show(info);
            }
  • 相关阅读:
    UVA 11488 Hyper Prefix Sets (字典树)
    UVALive 3295 Counting Triangles
    POJ 2752 Seek the Name, Seek the Fame (KMP)
    UVA 11584 Partitioning by Palindromes (字符串区间dp)
    UVA 11100 The Trip, 2007 (贪心)
    JXNU暑期选拔赛
    计蒜客---N的-2进制表示
    计蒜客---线段的总长
    计蒜客---最大质因数
    JustOj 2009: P1016 (dp)
  • 原文地址:https://www.cnblogs.com/aisa-thanatos/p/10980552.html
Copyright © 2011-2022 走看看