zoukankan      html  css  js  c++  java
  • 错误统一捕捉处理新方式

    /// <summary>
    /// 要执行的方法
    /// </summary>
    public delegate void MethodToDo();
    /// <summary>
    /// 处理错误的方法
    /// </summary>
    /// <param name="e">错误对象</param>
    public delegate void MethodDealException(Exception e);
    /// <summary>
    /// 将方法用try - catch块包围
    /// </summary>
    public class TryCatch
    {
    private event MethodToDo methodToDo;
    private event MethodDealException methodDealException;
    /// <summary>
    /// 将方法用try - catch块包围
    /// </summary>
    /// <param name="methodToDo">要执行的方法</param>
    public TryCatch(MethodToDo methodToDo)
    {
    this.methodToDo += methodToDo;
    Do();
    }
    /// <summary>
    /// 将方法用try - catch块包围
    /// </summary>
    /// <param name="methodToDo">要执行的方法</param>
    /// <param name="methodDealException">处理错误的方法</param>
    public TryCatch(MethodToDo methodToDo, MethodDealException methodDealException)
    {
    this.methodToDo += methodToDo;
    this.methodDealException += methodDealException;
    Do();
    }
    public void Do()
    {
    if (this.methodToDo != null)
    {
    //获得委托列表
    Delegate[] arr = this.methodToDo.GetInvocationList();
    foreach (Delegate d in arr)
    {
    try
    {
    MethodToDo method = (MethodToDo)d;
    //同步执行方法
    method.Invoke();
    }
    catch (Exception ex)
    {
    if (this.methodDealException != null) //执行自定义错误处理方法
    {
    Delegate[] err = this.methodDealException.GetInvocationList();
    foreach (Delegate de in err)
    {
    MethodDealException me = (MethodDealException)de;
    me.Invoke(ex);
    }
    }
    else //执行统一的错误处理方法
    {
    throw ex;
    }
    }
    }
    }
    }
    }

    调用:

    private void cal()  
    {  
         int i = calInt("a");  
    }  
    private int calInt(string p)  
    {  
        return int.Parse(p);  
    }  
    

      

    new TryCatch(cal);

  • 相关阅读:
    windows pm2 开机启动
    微信小程序自定义组件封装及父子间组件传值
    cloc 统计代码行数工具
    小程序获取当前页面路径url
    小程序navigator点击有时候会闪一下
    Centos7安装python3与Python2共存
    Docker配置国内官方镜像
    Centos7下Docker的安装与使用
    Centos7yum源修改为国内阿里源
    Vim下一键运行python代码
  • 原文地址:https://www.cnblogs.com/XuPengLB/p/7382151.html
Copyright © 2011-2022 走看看