4

在主文件中:

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 时,事件被触发!

4

1 回答 1

0

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

进入你的 Debug-->Exceptions,检查一切。然后运行你的程序。你几乎肯定会发现你的异常到底是什么。

看看这个讨论这个话题的问题也没什么坏处。

于 2013-10-17T13:22:20.290 回答