在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时,会触发该事件!
答案 0 :(得分:0)
我猜你会得到一个异常 not 你抛出的异常,而是另一个异常,通常不会被.Net异常处理伞“抓住”。一类此类异常是结构化错误处理异常(SEH),通常在非托管代码中存在问题(通常是内存问题或指针问题)时发生,该异常在执行中崩溃,但不能冒泡到.Net异常中处理流。
进入Debug - > Exceptions,并检查所有内容。然后运行你的程序。你几乎肯定会发现你的例外是什么。
查看this question并讨论该主题也不会有什么坏处。