В методе OnStartup определяю следующий код:
AppDomain.CurrentDomain.UnhandledException += delegate(object sender, UnhandledExceptionEventArgs args) {
//Запись в лог
};
Судя по документации он должен отлавливать все ранее не обработанные исключения, он срабатывает, идет запись в лог, а после этого приложение падает. Когда я запустил приложение в режиме отладки и сгенерировал исключение, оно вызвало обработчик, но после этого в Visual Studio появился помощник исключения, как будто исключение возникло без какой-либо обработки.
Что я делаю не так?
UDP. Как модифицировать код так, что-бы не только получать уведомление об исключениях, но еще их перехватывать?
Можно перехватывать необработанные исключения на разных уровнях:
AppDomain.CurrentDomain.UnhandledException - перехватывает из всех потоков в приложении.Dispatcher.UnhandledException - перехватывает из одного конкретного потока диспетчера UI.Application.Current.DispatcherUnhandledException - перехватывает из потока диспетчера UI main в приложении WPF.TaskScheduler.UnobservedTaskException - перехватывает в каждом AppDomain, который использует планировщик задач для асинхронных операций.Выбор между № 2 и № 3 зависит от того, используете ли вы более одного потока WPF. Это довольно экзотическая ситуация, и если вы не уверены, так это или нет, то, скорее всего, нет.
Источник
Сборка персонального компьютера от Artline: умный выбор для современных пользователей