Требуется событие Application.ThreadException .
Событие необработанных исключений AppDomain захватывает необработанные исключения, например, любые исключения, созданные методом Main
, однако Application.Run
обрабатывает исключения внутренне - это означает, что Application.Run
не вызовет исключение в результате исключение в обработчике событий, поэтому CatchUnhandledException
никогда не запускается.
Это означает, что если обработчик ThreadException
смог восстановиться после исключения, приложение продолжит нормальную работу (если исключение было выдано Application.Run
, восстановления не будет). По причинам, которые я не понимаю, это поведение отличается при отладке. . При отладке это поведение изменяется так, что создается исключение, позволяющее немедленно отлаживать исключения в Visual Studio - вот почему ваш обработчик необработанных исключений работает во время отладки.
Обратите внимание, что вышеуказанный обработчик CatchUnhandledException
будет перехватывать исключения, создаваемые фоновыми потоками в домене вашего приложения.
См. Также Application.SetUnhandledExceptionMode .