【发布时间】:2011-06-19 06:28:17
【问题描述】:
我认为有一个组件可以创建全局错误处理。
例如,当发生不好的事情时,我自己会抛出异常,例如
throw new ArgumentNullException("playlist is empty");
如何在全球范围内捕获它?
【问题讨论】:
标签: c# .net error-handling components global
我认为有一个组件可以创建全局错误处理。
例如,当发生不好的事情时,我自己会抛出异常,例如
throw new ArgumentNullException("playlist is empty");
如何在全球范围内捕获它?
【问题讨论】:
标签: c# .net error-handling components global
您可以通过AppDomain.UnhandledException 或Application.ThreadException 完成此操作。
有关这些事件的作用以及这些事件的区别的更多详细信息,请参阅文档。这个想法是AppDomain.UnhandledException 总是有效的。 Application.ThreadException 专门用于未处理的 UI 异常。
【讨论】:
Revision note:我被 Phillip Haack 指出重要的遗漏。其他常见的错误来源是 Application.ThreadException 事件。使用时有很多注意事项。
全局处理异常...
Windows 应用程序
System.Windows.Forms.Application.ThreadException 事件
一般用在 Main 方法中。参考MSDN Thread Exception
Asp.Net
System.Web.HttpApplication.Error 事件
通常用于 Global.asax 文件。参考MSDN Global.asax Global Handlers
控制台应用程序
System.AppDomain.UnhandledException 事件
一般用在 Main 方法中。参考MSDN UnhandledException
【讨论】:
AppDomain.CurrentDomain.UnhandledException