我一直在查看Windows API Code Pack 1.1,并且看过一个Error示例并想将它集成到我的Application中,主要的想法是它显示应用程序中是否发生任何错误,而不是任何错误但是我选择了一些。
我该如何编程?
我正在使用WPF
由于
答案 0 :(得分:3)
在App类的构造函数中添加:
DispatcherUnhandledException += new System.Windows.Threading.DispatcherUnhandledExceptionEventHandler(App_DispatcherUnhandledException);
然后向App类添加一个方法,类似于以下内容:
void App_DispatcherUnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e)
{
e.Handled = true;
if (MessageBox.Show("An unexpected error has occurred. You should exit this program as soon as possible.\n\n" +
"Exit the program now?\n\nError details:\n" + e.Exception.Message,
"Unexpected error", MessageBoxButton.YesNo) == MessageBoxResult.Yes)
Shutdown();
}
答案 1 :(得分:1)
您可以在程序的顶层设置一个catch块,它将显示包含相关错误详细信息的表单。或者您可以使用Application.UnhandledException(假设您使用的是winforms),Application.ThreadException和AppDomain.UnhandledException来捕获未处理的异常。
如果您希望在发生任何异常,处理或不处理时显示消息窗口,那么您将必须在每个catch块中显式编写代码以显示表单,或者使用PostSharp之类的东西编织显示的代码抛出异常时的表单。
答案 2 :(得分:0)
以下内容将捕获所有异常并将其显示在消息框中:
[STAThread]
public static void Main()
{
Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
Application.Run(new Form1());
}
private static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
{
// work with exception
MessageBox.Show(e.Exception.Message);
}
请注意,如果您对线程很重要,可能需要使用线程繁重的应用程序来测试其行为。
更多信息 here 。