ExecutionEngineException не перехвачено - PullRequest
0 голосов
/ 17 февраля 2011

Мне любопытно, почему ExecutionEngineException не перехватывается при выполнении кода ниже.

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

WriteLine никогда не будет достигнута. Есть идеи как поймать это исключение?

Примечание: я знаю, что AvalonDock генерирует исключение, когда один из DockablePanes находится в режиме AutoHide, виден, и пользователь пытается закрыть окно wpf.

Обновление: Я прочитал раздел замечаний на msdn относительно этого исключения:

CLR никогда не генерирует это исключение таким образом, чтобы управляемый код мог его перехватить.

Так что вопрос в том, как красиво закрыть приложение после чего-то подобного.

Ответы [ 2 ]

2 голосов
/ 17 февраля 2011

ExecutionEngineException представляет фатальную ошибку, от которой вы не должны пытаться восстанавливаться или обрабатывать. Вам нужно разобраться с этим в источнике проблемы, прежде чем это произойдет, и не пытаться решать ее изящно.

Поскольку вы говорите, что уже знаете источник проблемы, вам следует предпринять действия, чтобы приложение не достигло состояния, в котором оно принудительно выдало роковое исключение.

0 голосов
/ 18 июля 2011

Попробуйте добавить атрибут [System.Runtime.ExceptionServices.HandleProcessCorruptedStateExceptions()] к методу, в котором выполняется ваш код.

...