Ответ 1
Чтобы уловить Windows Form необработанные исключения, подключите
AppDomain.UnhandledException
и Application.ThreadException
события.
Интересно: Неожиданные ошибки в управляемых приложениях
Программа С# вызывается:
Application.Run (new formClass ());
Я хотел бы попробовать/поймать все это, чтобы уловить любые неперехваченные исключения. Когда я использую этот метод Run, исключения не пойманы; управление возвращается только тогда, когда программа завершается после неперехваченного исключения.
Где я могу поставить try/catch для охвата всей программы? Спасибо!
Чтобы уловить Windows Form необработанные исключения, подключите
AppDomain.UnhandledException
и Application.ThreadException
события.
Интересно: Неожиданные ошибки в управляемых приложениях
В принципе, вы не можете поймать все исключения при использовании хостингового процесса CLR по умолчанию. Период. Это связано с тем, что событие AppDomain.UnhandledException
является только уведомлением, вы не можете обработать исключение (что означает, что вы не можете запретить прекращение действия приложения после обработки уведомления).
Однако вы можете улавливать и обрабатывать все исключения в потоке пользовательского интерфейса приложения WinForms, используя его Application.ThreadException
обработчик (и управлять поведением через UnhandledExceptionMode
). Другие потоки, которые генерируют исключение, не будут улавливаться этим обработчиком.
В общем, не рекомендуется пытаться обрабатывать все исключения. Однако вы можете использовать
AppDomain.UnhandledException
, чтобы регистрировать ошибку и/или выполнять важные задачи очистки (например, закрытие базы данных на основе файлов).