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);

  • 相关阅读:
    POJ1045 Bode Plot
    POJ1044 Date bugs
    POJ1043 What's In A Name?
    POJ1042 Gone Fishing
    POJ1041 John's trip
    POJ1040 Transportation
    POJ1039 Pipe
    background-size属性
    一些CSS的备忘
    only-child选择器
  • 原文地址:https://www.cnblogs.com/XuPengLB/p/7382151.html
Copyright © 2011-2022 走看看