未处理的异常
Microsoft建议应用程序开发人员
接受CLR的默认策略
。也就是说,应用程序发生未处理的异常时,Windows会向事件日志写一条记录。为了查看该记录,可打开“事件查看器”应用程序,然后打开树结构中的"Windows日志”->“应用程序”节点
。还可以通过”Windows操作中心”来获取更有趣的细节。为了启动操作中心,请单击系统托盘中的小旗,选择“打开操作中心”。然后,请展开“维护”,单击“查看可靠性历史记录”链接。随后,会在底部的窗格看到应用程序由于未处理的异常而终止。
程序抛出了异常,但是没有匹配的Catch块来处理,CLR检测到进程中有任何线程有未处理的异常时,停止进程,windows会记录事件日志,这是个bug。
当然,也可以开发程序让CLR来处理为不处理异常,但是微软没有统一这个模型,不同种类的应用程序使用不同的代码,如:Microsoft的每种应用程序模型都有自己的与未处理异常打交道的方式。需要在文档中查阅以下成员的信息。
Winform
Winform:System.Windows.Forms.NativeWindow的OnThreadException、System.Windows.Forms.Application的OnThreadExcepition、System.Windows.Forms.Application的ThreadExcetpion事件
WPF
WPF:System.Windows.Application的DispatcherUnhandledException、System.Windows.Threading.Dispatcher的UnhandledException和UnHandledExceptionFilter事件
WCF:System.ServiceModel.Dispatcher.ChannelDispatcher的ErrorHandlers属性