Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#WPF未处理异常:如何充分利用它_C#_Wpf_Unhandled Exception - Fatal编程技术网

C#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) {

我对WPF很陌生,但发现能够捕获任何未处理的异常令人惊讶。我把

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成员,也没有快速操作帮助。。。