c# - 为什么异常不会在 WPF 对话框关闭事件处理程序之外冒泡?

标签 c# wpf exception dialog

在主文件中:

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/

相关文章:

c# - Azure 云服务未在部署中加载

c# - 有没有人有任何代码可以从 C# 调用 SignerSignEx?

wpf - 将一个大 XAML 拆分为多个 Sub-XAML 文件

c# - 来自外部 ResourceDictionary 的对象

Java - 无异常地关闭 ServerSocket?

go - 如何编写 “exception oriented”代码而不是 “if-error oriented”代码?

c# - 通过从dll中获取文件来读取文件的内容

c# - 如何使用 C# 和 WinSCP 从远程目录中删除 "."和 ".."文件

.net - 无法从控制更改控制可见性

python - 为什么 mp.Pool fast 会失败,而 ProcessPoolExecutor 不会?