Возможно ли попробовать / поймать всю программу на C #?

StackOverflow https://stackoverflow.com/questions/1601372

Вопрос

Программа на C # запускается:

Application.Run (new formClass ());

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

Где я могу разместить try / catch, чтобы охватить всю программу? Спасибо!

Это было полезно?

Решение

Чтобы перехватить необработанные исключения Windows Form, подключите AppDomain.UnhandledException и Application.ThreadException события.

Интересно: Неожиданные ошибки в управляемых приложениях

Другие советы

По сути, вы не можете перехватить все исключения при использовании процесса размещения CLR по умолчанию. Период. Это связано с тем, что AppDomain.UnhandledException Событие является только уведомлением, вы не можете обработать исключение (что означает, что вы не можете предотвратить завершение приложения после обработки уведомления).

Однако вы можете перехватить и обработать все исключения в потоке пользовательского интерфейса приложения WinForms, используя его Application.ThreadException контролирует поведение с помощью UnhandledExceptionMode ). Другие потоки, которые генерируют исключение, не будут перехвачены этим обработчиком.

В общем, не стоит пытаться обрабатывать все исключения. Вы можете, однако, использовать AppDomain.UnhandledException для регистрации ошибки и / или выполнения важных задач по очистке (например, закрытие файловой базы данных или что-либо еще).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top