zoukankan      html  css  js  c++  java
  • 利用委托机制处理.NET中的异常

    WinForm代码

    private void button1_Click(object sender, EventArgs e)
            {
                try
                {
                    Convert.ToInt32("abcd");
                }
                catch (Exception ex)
                {
                    ///通过delegate转向工作线程的异常处理
                    new ThreadExceptionHelper().ExceptionHandler(ex);
                }
            }
    

    处理代码:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace WinFormTest
    {
        public class ThreadExceptionHelper
        {
            /// <summary>
            /// 通过delegate转向工作线程的异常处理
            /// </summary>
            /// <param name="ex"></param>
            public void ExceptionHandler(Exception ex)
            {
                new WorkerThreadExceptionHandlerDelegate(WorkerThreadExceptionHandler).BeginInvoke(ex, null, null);
            }
    
    
            public void MainUIThreadExceptionHandler(Exception ex)
            {
                MainUIThreadExceptionHandler(this, new ThreadExceptionEventArgs(ex));
            }
    
            /// <summary>
            /// 主线程全局异常信息的处理
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="t"></param>
            public static void MainUIThreadExceptionHandler(object sender, ThreadExceptionEventArgs e)
            {
                MessageBox.Show("系统异常:" + e.Exception.Message, "异常信息", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1, MessageBoxOptions.ServiceNotification);
            }
    
    
            /// <summary>
            /// 声明工作线程的delegate
            /// </summary>
            public delegate void WorkerThreadExceptionHandlerDelegate(Exception e);
    
            /// <summary>
            /// 工作线程的异常处理
            /// </summary>
            /// <param name="e"></param>
            public void WorkerThreadExceptionHandler(Exception e)
            {
                ///添加其他的处理代码
    
                ///通知全局异常处理程序
                MainUIThreadExceptionHandler(this, new System.Threading.ThreadExceptionEventArgs(e));
            }
        }
    }
    

      

  • 相关阅读:
    转: 尽己力,无愧于心 存储过程
    转: 尽己力,无愧于心 FastReport.Net 常用功能总汇
    关于Ansi_Nulls、Quoted_Identifier、Ansi_Padding的用法
    数学建模
    数学建模
    深度学习
    C#复习
    Keras的两种网络模型
    xaml转义
    C# 文件目录操作
  • 原文地址:https://www.cnblogs.com/xsj1989/p/5279251.html
Copyright © 2011-2022 走看看