2011-02-17 55 views
0

我很好奇爲什麼ExecutionEngineException在執行下面的代碼時未被捕獲。ExecutionEngineException未捕獲

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

WriteLine永遠不會到達。任何想法如何捕捉這個異常?

注:我知道當DockablePanes處於AutoHide模式時,AvalonDock拋出異常,並且用戶正在嘗試關閉wpf窗口。

更新: 我讀過MSDN上的remarks section關於此異常:

的CLR不會拋出此異常,使得託管代碼可以捕獲它。

所以問題是如何在應用程序之後關閉應用程序。

回答

2

ExecutionEngineException代表一個致命錯誤,您不應該嘗試恢復或處理該錯誤。你需要在問題發生之前解決這個問題,而不是試圖正常處理它。

既然你說你已經知道問題的根源,那麼你應該採取行動來防止應用程序達到強制拋出致命異常的狀態。

+0

謝謝我得出同樣的結論。 – baalazamon 2011-02-17 10:56:23

0

考慮將[System.Runtime.ExceptionServices.HandleProcessCorruptedStateExceptions()]屬性添加到您的代碼執行的方法中。

+0

它不工作 – AVEbrahimi 2013-07-21 04:58:02