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

      

  • 相关阅读:
    WebStorm 简单部署服务器进行测试操作
    springbootstarterthymeleaf 避坑指南
    在linux云服务器上运行Jar文件
    springBoot整合MyBatise及简单应用
    关闭tomcat端口号
    基本项目框架搭建 sqlserver druid配置
    java springboot+maven发送邮件
    SQLServer 的存储过程与java交互
    Java 读写锁的实现
    SpringBoot 异步线程简单三种样式
  • 原文地址:https://www.cnblogs.com/xsj1989/p/5279251.html
Copyright © 2011-2022 走看看