Обработка неперехваченных исключений в консольном приложении C#

В настоящее время я пишу сервер, на котором размещено несколько модулей. Сервер запускает каждый модуль в отдельном AppDomain. Чего я хочу добиться, так это изоляции исключений, т.е. когда один модуль выдает исключение, я не хочу, чтобы весь процесс завершался, а только этот конкретный AppDomain. Я знаю, что могу сказать CLR вернуться к старому поведению (.NET 1.0), когда все неперехваченные исключения в разных потоках были проглочены. Однако это не самое «элегантное» решение.


person paszczi    schedule 23.10.2008    source источник


Ответы (1)


Как насчет того, чтобы подписаться на это событие:

AppDomain.CurrentDomain.UnhandledException

Вам нужно будет преобразовать свойство ExceptionObject из типа Object в Exception.

Надеюсь, это поможет.

person Igal Tabachnik    schedule 23.10.2008
comment
К сожалению, это не обработчик исключений, а только уведомляет вас о необработанном исключении. В общем приложение все равно вылетит :( - person paszczi; 23.10.2008
comment
когда происходит необработанное исключение, технически приложение уже аварийно завершило работу. Это позволяет вам выполнить действие и отладить приложение или уведомить пользователя. - person Tim Davis; 11.09.2015