2011-02-17 3 views
0

아래 코드를 실행할 때 ExecutionEngineException이 catch되지 않는 이유가 궁금합니다.ExecutionEngineException이 catch되지 않았습니다.

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

WriteLine에는 결코 도달하지 않습니다. 어떤 아이디어가이 예외를 잡는 방법?

참고 : DockablePanes 중 하나가 자동 숨기기 모드이고 표시되고 사용자가 wpf 창을 닫으려고 할 때 AvalonDock에 의해 예외가 발생한다는 것을 알고 있습니다.

업데이트 : 나는이 예외에 대한 MSDN의 remarks section을 읽은 다음 CLR은 결코 그것을 잡을 수있는 코드를 관리하는 방식으로이 예외를 throw하지

.

그래서 문제는 그런 식으로 응용 프로그램을 멋지게 닫는 방법입니다.

답변

2

ExecutionEngineException은 복구하거나 처리하려고해서는 안되는 치명적인 오류를 나타냅니다. 문제가 발생하기 전에 문제의 원인을 해결하고 정상적으로 처리하려고하지 않아야합니다.

문제의 원인을 이미 알고 있다고 말하면 응용 프로그램이 치명적인 예외를 강제로 throw하는 상태에 도달하지 못하도록 조치를 취해야합니다.

+0

같은 결론을 내 렸습니다. – baalazamon

0

코드가 실행되는 메서드에 [System.Runtime.ExceptionServices.HandleProcessCorruptedStateExceptions()] 특성을 추가하는 것이 좋습니다.

+0

작동하지 않습니다. – AVEbrahimi