Любой способ в Visual Studio не сломаться на бросание конкретного исключения? - PullRequest
10 голосов
/ 29 августа 2009

Существует ли атрибут pragma или debugger, который позволит отладчику не прерываться при возникновении определенного исключения , хотя в меню «Отладка >> Исключения», которое я сказал, чтобы оно прерывалось при любом CLR Исключения бросают?

В общем, во время разработки мне нравится, когда во время отладки возникают сбои в исключениях, чтобы я мог сразу же проверить их. Иногда бывают отдельные случаи, когда известно, что этот блок кода иногда генерирует исключения, и я обработал его с помощью try-catch. См. ответ на этот вопрос , где был достигнут консенсус о том, что попытка поймать является наиболее правильной ситуацией.

Я бы хотел иметь возможность установить атрибут метода (что-то аналогичное System.Diagnostics.DebuggerHiddenAttribute), который просто игнорирует любые исключения, генерируемые в методе.

Кстати, в настоящее время я испытываю это в Visual Studio 2008, но я предполагаю, что есть ответ для всех версий или нет.

1 Ответ

9 голосов
/ 30 августа 2009

Прямой ответ можно найти в пункте меню «Исключения» меню «Отладка». Это решение для каждого решения / проекта. (Инструменты> Параметр> Отладка является общесистемным параметром.) Подробнее см. В разделе справки Отладчик Visual Studio. Практическое руководство. Прерывание при возникновении исключения в http://msdn.microsoft.com/en-us/library/d14azbfh.aspx. Диалоговое окно «Исключения» позволяет указать, какие исключения генерируются или какие исключения возникают в отладчике.

Я обнаружил, что могу более эффективно использовать атрибут DebuggerStepThrough.

В общем, я оставляю выбрасывание исключений по умолчанию (Отладка> Исключения, не обработанные пользователем, проверено, а Брошено не проверено) и добавляю атрибут DebuggerStepThrough для методов, в которых я не заинтересован в переходе, и я не заинтересован, чтобы какие-либо исключения были брошенный в рамках этого метода. Я редко использую DebuggerHidden, и больше пользуюсь DebuggerNonUserCode в коде библиотеки.

...