Есть ли способ в Visual Studio не прерываться при возникновении определенного исключения?
-
20-09-2019 - |
Вопрос
Существует ли атрибут прагмы или отладчика, который позволит отладчику не прерываться при возникновении определенного исключения? Несмотря на то в меню «Отладка >> Исключения» я сказал, чтобы он прерывался при возникновении каких-либо исключений CLR?
В общем, во время разработки мне нравится, чтобы во время отладки он прерывался на исключения, чтобы я мог немедленно их проверить.Иногда бывают отдельные случаи, когда известно, что этот блок кода иногда выдает исключения, и я обработал их с помощью try-catch.Видеть ответ на этот вопрос где был достигнут консенсус в том, что попытка-поймать является наиболее правильной ситуацией.
Я хотел бы иметь возможность установить атрибут для метода (что-то аналогичное System.Diagnostics.DebuggerHiddenAttribute), который просто игнорирует любые исключения, возникающие в методе.
Кстати, сейчас я испытываю это в Visual Studio 2008, но предполагаю, что есть ответ либо для всех версий, либо ни для одного.
Решение
Прямой ответ можно найти в пункте меню «Исключения» меню «Отладка».Это настройка для каждого решения/проекта.(Инструменты > Параметры > Отладка — общесистемный параметр.) См. раздел справки. Отладчик Visual Studio, инструкции:Прерывание при возникновении исключения в http://msdn.microsoft.com/en-us/library/d14azbfh.aspx для получения подробной информации.Диалоговое окно «Исключения» позволяет вам указать, какие исключения выдаются или какие исключения попадают в отладчик.
Я обнаружил, что получаю больше пользы от DebuggerStepThrough
атрибут.
В общем, я оставляю выдачу исключений по умолчанию (Отладка > Исключения, необработанные пользователем отмечены и Выброшенные не отмечены) и добавляю DebuggerStepThrough
атрибут для методов, в которых я не заинтересован в прохождении и не заинтересован в возникновении каких-либо исключений внутри этого метода.Я редко использую DebuggerHidden
, и получите больше пользы с DebuggerNonUserCode
в коде библиотеки.