Как лучше всего обрабатывать все исключения в приложении WPF? - PullRequest
10 голосов
/ 24 июня 2009

Привет
Есть ли способ обработки всех исключений ошибок и сбоев в приложении WPF? Я знаю о DispatcherUnhandledException , но он обрабатывает только исключения в потоке пользовательского интерфейса, не так ли? Есть ли способ перехватывать и регистрировать все исключения в других потоках? и ошибки привязки тоже? Как вы реализуете такие требования в вашей корпоративной системе?

Ответы [ 4 ]

10 голосов
/ 24 июня 2009
AppDomain.CurrentDomain.UnhandledException

Будет перехватывать любые необработанные исключения для текущего потока. Вот как мы справляемся с этим в нашем приложении.

BindingErrors всегда обрабатывается и регистрируется в окне вывода. Перед выпуском мы проверяем окно вывода на наличие ошибок привязки и исправляем столько, сколько можем.

Однако, по моему мнению, вы не хотели бы рассматривать ошибки привязки как необработанные, так как они в основном исправимы и должны исправляться как можно лучше перед каждым выпуском. Вы можете изменить «Отладка»> «Исключения» в Visual Studio, чтобы он вызывал BindingFailure для получения более конкретной информации.

НТН,

Dennis

4 голосов
/ 24 июня 2009

Да, есть 3 места:

  1. место Application.Run() в try ... catch
  2. DispatcherUnhandledException
  3. AppDomain.CurrentDomain.UnhandledException

В любом случае вы должны отобразить сообщение «пожалуйста, прости меня» и предложить отправить сообщение об ошибке.

Служба на вашем сервере должна ответить либо «спасибо за отправку отчета об ошибке», либо «проблема уже исправлена ​​в следующей версии. пожалуйста, обновите '

3 голосов
/ 24 июня 2009

Имейте в виду, что Microsoft не рекомендует перехватывать все исключения, вместо этого они рекомендуют перехватывать только те исключения, которые вы знаете (или ожидаете, что это произойдет в каком-то месте). Более того, если вы хотите получить логотип «Certified for Microsoft [Windows | Vista]», вы не должны ловить неизвестные исключения, и такие исключения должны идти в Wer .

1 голос
/ 13 июня 2012
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...