Я хотел бы, чтобы 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 перейдите в меню «Отладка» >> «Исключения ...» >> «Исключения общеязыковой среды выполнения» >> «Система» и выберите «Исключение System.NullReferenceException»
2) В нижней части этого диалогового окна есть поле «Когда выдается исключение:», выберите «Взлом в отладчик».
3) Запустите свой сценарий. Когда выдается исключение, отладчик останавливается и уведомляет вас в диалоговом окне, в котором говорится что-то вроде: «Возникло исключение типа« System.NullReferenceException ». [Break] [Continue]»
Хит [Перерыв]. Это поместит вас в строку кода, которая вызывает проблему.
Но они не относятся к Visual Studio 2005 ( в меню « Отладка» нет опции « Исключения» ).
Кто-нибудь знает, где находится диалоговое окно «Найти эти параметры» в Visual Studio, в котором находится групповое поле « Когда выбрасывается исключение » с параметром « Взлом в отладчик »?
Обновление: проблема заключалась в том, что в моем меню отладки не было элемента « Исключения» . Я настроил меню, чтобы добавить его вручную.
источник
Ответы:
Открыв решение, перейдите в меню «Отладка - Исключения ( Ctrl+ D, E)». Оттуда вы можете выбрать для исключения Throw или необработанного пользователем .
РЕДАКТИРОВАТЬ: мой экземпляр настроен с "профилем" C #, возможно, его нет для других профилей?
источник
Common Language Runtime Exceptions
><All Common Language Runtime Exceptions not in this list>
под Visual Studio 2017, и все мои самые смелые мечты сбылись.В VS2005 есть окно «Исключения» ... попробуйте Ctrl+ Alt+ Eпри отладке и установите флажок «Брошено» для исключения, на котором вы хотите остановиться.
источник
Мне потребовалось время, чтобы найти новое место для настроек ожидания, поэтому новый ответ.
Начиная с Visual Studio 2015, вы управляете тем, какие исключения следует включать в окне настроек исключений (Debug-> Windows-> Exception Settings). Ярлык все еще Ctrl- Alt- E.
Самый простой способ обработки пользовательских исключений - выбрать «все исключения, отсутствующие в этом списке».
Вот скриншот из английской версии:
Вот скриншот с немецкой версии:
источник
Начиная с Visual Studio 2015 и далее, вам нужно перейти в диалоговое окно «Настройки исключений» ( Ctrl+ Alt+ E) и отметить «Общие исключения времени выполнения языка» (или конкретное, которое вы хотите, т. Е.
ArgumentNullException
), Чтобы оно разрывалось на обработанные исключения.Шаг 1 Шаг 2
источник
Проверьте страницу « Управление исключениями» на странице « Отладчик» , в которой объясняется, как это настроить.
По сути, вот шаги (во время отладки):
В меню «Отладка» выберите «Исключения».
В диалоговом окне «Исключения» выберите «Брошенные» для всей категории исключений, например, «Исключения времени выполнения общего языка».
-или-
Разверните узел для категории исключений, например Общих исключений времени исполнения, и выберите Брошенный для конкретного исключения в этой категории.
источник
Техника, которую я использую, похожа на следующую. Определите глобальную переменную, которую вы можете использовать для одного или нескольких блоков try catch, в зависимости от того, что вы пытаетесь отлаживать, и используйте следующую структуру:
Я считаю, что это дает мне больше гибкости с точки зрения тестирования, потому что есть еще некоторые исключения, которые я не хочу, чтобы IDE ломалась.
источник
catch(){/*handle or not*/ throw; } // throw without any exception specified will rethrow original exception with original callstack etc
Электронная документация кажется немного неясной, поэтому я просто провел небольшой тест. Выбор прерывания на Thrown в диалоговом окне «Исключения» приводит к прерыванию выполнения программы для любого исключения, обработанного или необработанного. Если вы хотите разбить только обработанные исключения, кажется, что единственным выходом для вас является прохождение кода и установка точек останова на все обработанные исключения. Это кажется немного чрезмерным, поэтому может быть лучше добавить оператор отладки всякий раз, когда вы обрабатываете исключение. Затем, когда вы видите этот вывод, вы можете установить точку останова в этой строке кода.
источник