Visual Studio: как разбить обработанные исключения?

Я бы хотел, чтобы Visual Studio разбилась, когда происходит обработанное исключение (т.е. я просто не хочу видеть сообщение "Первая случайность", я хочу отлаживать фактическое исключение).

например. Я хочу, чтобы отладчик разбился на исключение:

try
{
   System.IO.File.Delete(someFilename);
}
catch (Exception)
{
   //we really don't care at runtime if the file couldn't be deleted
}

Я встретил эти примечания для Visual Studio.NET:

1) В VS.NET перейдите в меню отладки → "Исключения..." → "Общий язык Runtime Exceptions" → "Система" и выберите "System.NullReferenceException"

2) В нижней части этого диалога это "Когда исключение выбрано:" group box, выберите "Перерыв в отладчик"

3) Запустите свой сценарий. Когда исключение, отладчик будет остановите и сообщите вам диалог, который говорит что-то вроде:            "Исключение типа" System.NullReferenceException "имеет были брошены.           [Перерыв] [Продолжить]"

Нажмите [Break]. Это положит вас на строка кода, вызывающая проблема.

Но они не применяются к Visual Studio 2005 (в Отладка) нет Исключения).

Кто-нибудь знает, где найти это диалоговое окно параметров в Visual Studio, если поле группы "Когда исключение выбрано", с возможностью "Входить в отладчик"?

Обновление: проблема заключалась в том, что в моем Отладочном меню не было элемента Исключения. Я настроил меню, чтобы вручную добавить его.

Ответ 1

Открыв решение, перейдите в пункт меню "Отладка - Исключения" (Ctrl + D, E). Оттуда вы можете отказаться от брошенных или исключенных пользователем исключений.

EDIT: Мой экземпляр настроен с помощью профиля С# "возможно, он не существует для других профилей?

Ответ 2

В VS2005 есть окно "exceptions"... try Ctrl + Alt + E при отладке и установите флажок "Брошенный" для исключения, которое вы хотите остановить.

Ответ 3

Мне потребовалось некоторое время, чтобы найти новое место для настроек ожидания, поэтому новый ответ.

Начиная с Visual Studio 2015, вы управляете тем, какие исключения следует включать в окне настроек исключений (Debug-> Windows-> Настройки исключений). Ярлык по-прежнему Ctrl - Alt - E.

Самый простой способ обработки пользовательских исключений - выбрать "все исключения, отсутствующие в этом списке".

Вот скриншот из английской версии:

enter image description here

Вот скриншот с немецкой версии:

enter image description here

Ответ 4

Начиная с Visual Studio 2015 и далее, вам нужно перейти в диалоговое окно "Настройки исключений" (Ctrl + Alt + E) и отметить "Исключения времени выполнения общего языка" (или конкретное, которое вы хотите, например, ArgumentNullException) разбить его на обработанные исключения.

Шаг 1 Step 1 Шаг 2 Step 2

Ответ 5

Проверьте страницу " Управление исключениями" на странице " Отладчик", она объясняет, как это настроить.

По сути, вот шаги (во время отладки):

  1. В меню "Отладка" выберите "Исключения".

  2. В диалоговом окне "Исключения" выберите "Брошенные" для всей категории исключений, например, "Исключения времени выполнения общего языка".

    -или же-

    Разверните узел для категории исключений, например Общих исключений времени исполнения, и выберите Брошенный для конкретного исключения в этой категории.

Ответ 6

Метод, который я использую, похож на следующий. Определите глобальную переменную, которую вы можете использовать для одного или нескольких блоков catch catch в зависимости от того, что вы пытаетесь отлаживать и используете следующую структуру:

if(!GlobalTestingBool)
{
   try
   {
      SomeErrorProneMethod();
   }
   catch (...)
   {
      // ... Error handling ...
   }
}
else
{
   SomeErrorProneMethod();
}

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

Ответ 7

Онлайн-документация кажется немного неясной, поэтому я просто провела небольшое испытание. При выборе варианта "Бросить из диалогового окна" Исключения "выполнение программы прерывается на любом исключении, обрабатывается или необрабатывается. Если вы хотите только использовать только обработанные исключения, кажется, что ваш единственный регресс заключается в том, чтобы пройти через ваш код и поставить контрольные точки на все ваши обработанные исключения. Это кажется немного чрезмерным, поэтому было бы лучше добавить инструкцию debug всякий раз, когда вы обрабатываете исключение. Затем, когда вы видите этот вывод, вы можете установить точку останова в этой строке в коде.