在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创建的
无
时间: 2024-08-04 04:47:10