ExecutionEngineException未被捕获

时间:2011-02-17 09:39:45

标签: c# wpf avalondock executionengineexception

我很好奇为什么在执行下面的代码时没有捕获到ExecutionEngineException。

try                            
{
   ((Window)window).Close();
}
catch (Exception e)
{
   Console.WriteLine(e);
}

永远不会到达WriteLine。任何想法如何捕捉这个例外?

注意:我知道当其中一个DockablePanes处于AutoHide模式时,AvalonDock会抛出异常,可见并且用户正在尝试关闭wpf窗口。

更新: 我在msdn上阅读了有关此异常的remarks section

CLR永远不会以托管代码可以捕获它的方式抛出此异常。

所以问题是如何在这样的事情之后很好地关闭应用程序。

2 个答案:

答案 0 :(得分:2)

ExecutionEngineException表示致命错误,您不应该尝试恢复或处理。你需要在问题发生之前解决这个问题,而不是试图优雅地处理问题。

由于您说您已经知道问题的根源,因此您应该采取措施防止应用程序达到强制抛出致命异常的状态。

答案 1 :(得分:0)

考虑将[System.Runtime.ExceptionServices.HandleProcessCorruptedStateExceptions()]属性添加到执行代码的方法中。