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);
            }
  • 相关阅读:
    归一化与标准化的概念与区别
    深度学习中的优化器学习
    yolo3与yolo-tiny
    给tensorflow1.x estimator 添加timeline分析性能
    python 爬取百度图片
    TensorFlow 高性能数据输入管道设计指南
    TensorRT加速tensorflow模型(使用Tensorflow内置tensorRT,避免写自定义Plugin)
    21.Pod的limit和request和资源监控收集服务Heapster
    20.调度器,预选策略和优选策略
    8.docker的安全性
  • 原文地址:https://www.cnblogs.com/aisa-thanatos/p/10980552.html
Copyright © 2011-2022 走看看