Как добавить глобальную обработку исключений в dll надстройки? - PullRequest
0 голосов
/ 11 января 2010

Вот мой контекст:

  • Я пишу надстройку WPF для приложения.
  • Основной поток этого приложения неуправляемый.
  • Я хочудобавить глобальную систему обработки исключений для этой надстройки для обработки любых необработанных исключений.

Вот что я пробовал, но не работает:

  • Я не могу добавить попытку-catch блок к моей строке кода Application.Run ().Поскольку я являюсь надстройкой, этот фрагмент кода находится в приложении.
  • System.Windows.Forms.Application.ThreadException также не работает.Возможно, не существует приложения WinForm.(Хостинг WPF в неуправляемом коде.)
  • AppDomain.CurrentDomain.UnhandledException также не работает.Потому что, возможно, это обрабатывается самим приложением.Он просто не вводит мой код.

Итак, есть идеи для этой ситуации?

Ответы [ 2 ]

0 голосов
/ 19 сентября 2011
 Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
0 голосов
/ 11 января 2010

Вам не следует трогать глобальную обработку исключений, даже если вы можете, вы пишете надстройку, и подключение к глобальной обработке исключений изменит не только поведение вашей надстройки, но и основное приложение и все остальные надстройки. в системе - делать что-то, что может привести к ошибкам в других надстройках, не значит быть хорошим соседом: -)

Теперь, что вы можете сделать, это обернуть каждый вызываемый извне метод в вашей надстройке блоком try-catch, это, очевидно, невозможно, но система AOP, такая как PostSharp, может легко добавить их для вас, сохраняя код обработки в хорошее центральное расположение.

...