Почему окно необработанных исключений winforms иногда может продолжаться? - PullRequest
1 голос
/ 24 апреля 2011

Я недавно переключился на обработку моих необработанных исключений следующим образом:

Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);

Это будет хорошо для ведения журнала, а что нет, но я потерял способность старого необработанного поля исключений «продолжить». Мой текущий обработчик просто запрашивает перезапуск. Большую часть времени нажатие кнопки «Продолжить» в этом необработанном окне исключений фактически поддерживает работу программы. Как это работает? Есть ли способ, которым я могу позволить «продолжить» тем способом, которым я сейчас улавливаю необработанные исключения? Скажите, если исключение относится к определенному типу, могу ли я попытаться «продолжить» так же, как это делает необработанное исключение? Или это невозможно?

Кто-нибудь там понимает гайки и болты мира исключений? Хотелось бы услышать мысли ваших парней.

1 Ответ

2 голосов
/ 24 апреля 2011

Приложение завершено, потому что это поведение по умолчанию CLR.Если у вас есть исключение, которое не обрабатывается, это означает, что у вас есть критический недостаток в вашей программе, и лучшая обработка для такой ситуации - закрыть все приложение.продолжить после такого необработанного исключения.Вы можете создать второй домен в своем приложении и загрузить туда библиотеки.Исключения в разных доменах приложений являются независимыми.Посмотрите на мою запись в блоге , здесь приведен пример кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...