首页 > 代码库 > 在.NET Windows Form Application中统一处理未处理的异常总结

在.NET Windows Form Application中统一处理未处理的异常总结

在Windows Form Application中,异常若最终得不到处理,则会触发AppDomain.CurrentDomain.UnhandledException事件进行以进行最终的异常记录(使用此事件无法避免应用程序的终结)。在此事件被触发之前,分以下情况可决定是否将异常继续传播。

主线程

使用Application.SetUnhandledExceptionMode(bool)方法预先设置处理模式:

  • 若为UnhandledExceptionMode.ThrowException,则表示继续传播。
  • 若为UnhandledExceptionMode.CatchException,则使用Application.ThreadException事件进行捕获处理,若在此事件中再抛出异常则会继续传播。

 

任务,包括用new Task()与TaskFactory创建的

可使用TaskScheduler.UnobservedTaskException事件进行捕获处理(注意此事件要在垃圾收集完毕后才会触发)设置Observed值:

  • 若为False,则表示继续传播
  • 若为True,则不会继续传播。

 

自定义线程,包括使用New Thread()与ThreadPool创建的

在.NET Windows Form Application中统一处理未处理的异常总结