Создание глобального обработчика исключений для Visual Studio 2010 VsPackage
В предыдущих версиях Visual Studio была единственная точка входа в расширение (точнее, addin), метод OnConnect
. Оттуда можно было выполнить все операции Visual Studio, такие как добавление пунктов меню и настройка глобального обработчика исключений, чтобы изящно обрабатывать необработанные исключения.
В Visual Studio 2010 VsPackage все работает по-другому - многие части приложения (такие как IWpfTextView
) состоят из MEF и загружаются без явного контроля над пакетом, делая обработку любых исключений, исходящих из очень сложных.
Без явной упаковки всех таких компонентов в свой собственный try..catch
, как я могу эффективно реализовать глобальный обработчик для (некритических) исключений в моем VsPackage?
Опять же, цель состоит в том, чтобы иметь что-то вроде диалога исключения ReSharper, где он может обрабатывать глобальные исключения без сбоев в Visual Studio.
Ответы
Ответ 1
Я изучил эту тему, читая официальный форум VsExtensibility и согласно this и в этом существует нет такого места для привязки для обнаружения всех исключений. Поэтому типичным решением будет использование try... catch везде.
Я предлагаю использовать одну из фреймворков AOP, например PostSharp, чтобы выполнить это с помощью атрибутов, чтобы устранить тонны дерьмового дублированного кода, который предназначен только для целей предназначен для обработки необработанных исключений.