По сути, вы не можете перехватить все исключения при использовании процесса размещения CLR по умолчанию. Период. Это происходит потому, что событие AppDomain.UnhandledException
является только уведомлением, вы не можете обработать исключение (что означает, что вы не можете предотвратить завершение приложения после обработки уведомления).
Однако вы можете перехватить и обработать все исключения в потоке пользовательского интерфейса приложения WinForms, используя его обработчик Application.ThreadException
(и управляют поведением через UnhandledExceptionMode
). Другие потоки, которые генерируют исключение, не будут перехвачены этим обработчиком.
В общем, не стоит пытаться обрабатывать все исключения. Вы можете, однако, использовать
AppDomain.UnhandledException
для регистрации ошибки и / или выполнения важных задач по очистке (например, закрытие файловой базы данных или что-то еще).