Подтвердить что ты не робот

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

Программа С# вызывается:

Application.Run (new formClass ());

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

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

4b9b3361

Ответ 2

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

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

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