C#WPF未处理异常:如何充分利用它
我对WPF很陌生,但发现能够捕获任何未处理的异常令人惊讶。我把C#WPF未处理异常:如何充分利用它,c#,wpf,unhandled-exception,C#,Wpf,Unhandled Exception,我对WPF很陌生,但发现能够捕获任何未处理的异常令人惊讶。我把 this.Dispatcher.UnhandledException += Dispatcher_UnhandledException; 在我的类的构造函数中。这就让我把它困在了 private void Dispatcher_UnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e) {
this.Dispatcher.UnhandledException += Dispatcher_UnhandledException;
在我的类的构造函数中。这就让我把它困在了
private void Dispatcher_UnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e)
{
e.Handled = true;
...
}
起初它不起作用,但后来我看到,要使它起作用,我必须在发行版和外部VS IDE中运行它。这样就行了
我想得到的是尽可能多的关于异常原因的信息。可能是异常类型、序列号、行和提供的任何其他内容
此刻通过做
int a = 0;
int b = 3 / a;
而且
MessageBox.Show(e.ToString() + " " + sender.ToString());
我得到:
所以这不是正确的方法
我知道我没有在问题中提供必要的信息,但我已经搜索了各种答案,但没有人报告我需要什么。如果是这样的话,在关闭之前保存任何数据(但不保存有关关闭的数据,但不检测导致异常的原因)可能会很有用
更重要的是,当我退出时
Environment.Exit(-1)
我发现流程仍在运行,这是一个问题。
这里它说我必须终止我的进程,这真的是在发生未处理的异常后关闭应用程序的正确方法吗
感谢您的帮助导致应用程序崩溃的实际异常被包装在
DispatcherUnhandExceptionEventArgs
参数中
只需使用e.Exception
即可获得它
MessageBox.Show(e.Exception.ToString());
显示异常后,我建议通过调用base
方法允许应用程序继续:
base.OnUnhandledException(sender, e);
当然,您可以选择将异常标记为已处理,但是如果您只是简单地重写此方法以显示错误,我不会将其视为已处理。您面临的是一个除数为零的异常。谢谢您,这只是一个示例颜色我很笨,但为什么我不能将基数设为。OnUnhandledException(发送方,e);指令??base没有OnUnhandledException成员,也没有快速操作帮助。。。