利用委托机制处理.NET中的异常

概述

.NET中,可以轻松的通过try-catch块来捕获异常。为了防止在应用程序中出现未处理的异常,可以通过添加一个全局的异常处理函数,如果是多线程的处理,还必须考虑除了主线程之外的工作线程中的异常处理办法,这里用委托机制来实现。

主线程的异常处理

使用Application对象中的ThreadException属性设置一个delegate来捕获所有的未处理的主线程中出现的异常。注意这个全局异常处理程序,只能捕获到主线程中的异常,对于我们自己添加的工作线程、辅助线程的异常是捕获不到的。

(Application.ThreadException(注意:这个事件需要关闭 JIT 异常调试功能再能被引发)和 AppDomain.CurrentDomain.UnhandledException 两个事件。)

在应用程序入口添加全局异常处理:

 

 1        }

 

处理程序:

 

 1利用委托机制处理.NET中的异常(Multi thread)public static void MainUIThreadExceptionHandler(Exception ex)
 2}

 


工作线程的异常处理

编写多线程代码时,我们必须考虑在工作线程中出现的异常。在线程的入口使用try-catch块,并通过delegate将发生的异常通知给主线程。必须将异常信息通知主线程,否则应用程序不会报错,异常将会消失。

在线程入口使用try-catch块:

 

 1}

 

工作线程异常的处理:

 

 1}

 

总结

对于捕获到异常,我们可以Log到文件或者数据库,但是必须保证捕获到所有的异常,以上通过委托机制实现了.NET中的主线程以及工作线程中的异常捕获。

完整的程序代码:

 

  1利用委托机制处理.NET中的异常(Multi thread)using System;
  2利用委托机制处理.NET中的异常(Multi thread)using System.Drawing;
  3利用委托机制处理.NET中的异常(Multi thread)using System.Collections;
  4利用委托机制处理.NET中的异常(Multi thread)using System.ComponentModel;
  5利用委托机制处理.NET中的异常(Multi thread)using System.Windows.Forms;
  6利用委托机制处理.NET中的异常(Multi thread)using System.Data;
  7利用委托机制处理.NET中的异常(Multi thread)using System.Threading;
  8利用委托机制处理.NET中的异常(Multi thread)
  9利用委托机制处理.NET中的异常(Multi thread)namespace UseDelegateException
 10

转载自: http://terrylee.cnblogs.com/archive/2005/12/12/295243.html

相关文章:

  • 2022-03-07
  • 2021-08-21
  • 2021-12-07
  • 2022-12-23
  • 2021-11-29
  • 2021-12-19
  • 2022-01-09
猜你喜欢
  • 2022-01-27
  • 2021-12-22
  • 2021-07-06
  • 2022-12-23
  • 2021-09-18
相关资源
相似解决方案