如何在 Windows 窗体应用程序中创建全局错误处理程序?

Posted

技术标签:

【中文标题】如何在 Windows 窗体应用程序中创建全局错误处理程序?【英文标题】:How to create global error handler in Windows Form Application? 【发布时间】:2011-06-19 06:28:17 【问题描述】:

我认为有一个组件可以创建全局错误处理。

例如,当发生不好的事情时,我自己会抛出异常,例如

throw new ArgumentNullException("playlist is empty");

如何在全球范围内捕获它?

【问题讨论】:

【参考方案1】:

MSDN 是你的朋友:http://msdn.microsoft.com/en-us/library/system.windows.forms.application.threadexception.aspx

【讨论】:

【参考方案2】:

您可以通过AppDomain.UnhandledExceptionApplication.ThreadException 完成此操作。

有关这些事件的作用以及这些事件的区别的更多详细信息,请参阅文档。这个想法是AppDomain.UnhandledException 总是有效的。 Application.ThreadException 专门用于未处理的 UI 异常。

【讨论】:

AppDomain.UnhandledException 也适用于 Compact Framework。 使用 AppDomain.UnhandledException 事件时要小心 Revision note:我被 Phillip Haack 指出重要的遗漏。其他常见的错误来源是 Application.ThreadException 事件。使用时有很多注意事项。【参考方案3】:

全局处理异常...

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

以上是关于如何在 Windows 窗体应用程序中创建全局错误处理程序?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 C# 在 Windows 窗体中创建 F1 帮助

在 Windows 窗体中创建类似控制台的信息显示

在 Windows 窗体中创建条形图

如何在Visual Studio中创建Winform窗体应用

在 Windows 窗体 C# 中创建 POI 映射。如何将图标(图像)放在地图上(图片框中的现有图像)?

如何在Visual C ++中创建非托管Windows GUI?