在主文件中:
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 block 。你知道为什么吗?
编辑:我应该提到我已经检查过在我按下关闭按钮后调用了 MyDialogWindow_Closing。
EDIT2:当监听 AppDomain.CurrentDomain.UnhandledException 时,事件被触发!
最佳答案
我猜你得到的异常不是你抛出的异常,而是另一个通常不会被 .Net 异常处理伞“捕获”的异常。其中一类异常是结构化错误处理异常 (SEH),通常发生在非托管代码出现问题(通常是内存问题或指针问题)时,该代码在执行过程中崩溃,但无法冒泡到 .Net 异常中处理流。
进入您的调试-->异常,并检查所有内容。然后运行你的程序。您几乎肯定会发现真正的异常是什么。
看看this question 不会有什么坏处|以及讨论该主题的内容。
关于c# - 为什么异常不会在 WPF 对话框关闭事件处理程序之外冒泡?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19189851/