未处理的异常

  • Microsoft建议应用程序开发人员接受CLR的默认策略。也就是说,应用程序发生未处理的异常时,Windows会向事件日志写一条记录。为了查看该记录,可打开“事件查看器”应用程序,然后打开树结构中的"Windows日志”->“应用程序”节点

  • 还可以通过”Windows操作中心”来获取更有趣的细节。为了启动操作中心,请单击系统托盘中的小旗,选择“打开操作中心”。然后,请展开“维护”,单击“查看可靠性历史记录”链接。随后,会在底部的窗格看到应用程序由于未处理的异常而终止。

  • 程序抛出了异常,但是没有匹配的Catch块来处理,CLR检测到进程中有任何线程有未处理的异常时,停止进程,windows会记录事件日志,这是个bug。

  • 当然,也可以开发程序让CLR来处理为不处理异常,但是微软没有统一这个模型,不同种类的应用程序使用不同的代码,如:Microsoft的每种应用程序模型都有自己的与未处理异常打交道的方式。需要在文档中查阅以下成员的信息。

Winform

  1. WinformSystem.Windows.Forms.NativeWindowOnThreadExceptionSystem.Windows.Forms.ApplicationOnThreadExcepitionSystem.Windows.Forms.ApplicationThreadExcetpion事件

WPF

  1. WPFSystem.Windows.ApplicationDispatcherUnhandledExceptionSystem.Windows.Threading.DispatcherUnhandledExceptionUnHandledExceptionFilter事件
  2. WCFSystem.ServiceModel.Dispatcher.ChannelDispatcherErrorHandlers属性