为什么异常不会超出WPF对话框关闭事件处理程序?

时间:2013-10-04 20:05:03

标签: c# wpf exception dialog

在MainFile中:

Window window = new MyDialogWindow();
try
{
    window.ShowDialog();
}
catch
{
    // This is never called !
}

在MyDialogWindow中:

private void MyDialogWindow_Closing( object sender, CancelEventArgs e )
{
    throw new Exception();
}

似乎抛出到关闭事件处理程序的异常永远不会到达调用者的catch块。你知道为什么吗?

编辑:我应该提一下,在按下关闭按钮后,我已经检查过调用了MyDialogWindow_Closing。

EDIT2:在收听AppDomain.CurrentDomain.UnhandledException时,会触发该事件!

1 个答案:

答案 0 :(得分:0)

我猜你会得到一个异常 not 你抛出的异常,而是另一个异常,通常不会被.Net异常处理伞“抓住”。一类此类异常是结构化错误处理异常(SEH),通常在非托管代码中存在问题(通常是内存问题或指针问题)时发生,该异常在执行中崩溃,但不能冒泡到.Net异常中处理流。

进入Debug - > Exceptions,并检查所有内容。然后运行你的程序。你几乎肯定会发现你的例外是什么。

查看this question并讨论该主题也不会有什么坏处。