Em ferramentas / exceções, defini a opção de que o depurador pare quando uma exceção é lançada. Quer seja pego ou não.
Como posso excluir uma exceção a essa regra? Em algum lugar do meu código, há uma exceção detectada que faz parte da lógica do programa. Obviamente, não quero que essa exceção pare o depurador sempre que for atingida.
Exemplo: desejo ignorar a exceção de referência nula (que foi detectada) na linha 344. Eu quero parar em todas as outras exceções
Respostas:
Se bem me lembro, você pode usar um
DebuggerStepThrough
atributo no método que contém o código que você não deseja que a exceção dispare. Suponho que você possa isolar o código que dispara a exceção irritante em um método e decorá-lo com o atributo.fonte
DebuggerStepThrough
atributo não afeta o comportamento do depurador com exceções de primeira chance.DebuggerStepThrough
atributo não tem significado para o CLR. Ele é interpretado por depuradores. Parece que não funciona de maneira confiável em uma variedade de circunstâncias eDebuggerHidden
funcionará de forma confiável stackoverflow.com/a/3455100/141172DebuggerHidden
é seu amigo!Testado em VS2010 e funciona muito bem.
Embora
DebuggerStepThrough
pareça funcionar também para algumas versões específicas do depurador,DebuggerHidden
parece funcionar para uma gama mais ampla de situações com base nos comentários de ambas as respostas.Observe que ambas as opções não funcionam atualmente com métodos de bloco iterador ou para métodos assíncronos / aguardar . Isso pode ser corrigido em uma atualização posterior do Visual Studio.
fonte
DebuggerHidden
também ...DebuggerStepThrough é aquele a ser usado para evitar que o depurador interrompa um método em que haja um try / catch.
Mas isso só funciona se você não desmarcar a opção "Ativar apenas meu código (somente gerenciado)" nas configurações gerais das Opções de depuração do Visual Studio (menu Ferramentas / Opções, nó Depuração / Geral) ...
Mais informações sobre esse atributo em http://abhijitjana.net/2010/09/22/tips-on-debugging-using-debuggerstepthrough-attribute/
DebuggerHidden simplesmente impedirá que o Debugger exiba o método onde a exceção é lançada. Em vez disso, ele mostrará o primeiro método na pilha que não está marcado com aquele atributo ...
fonte
Os atributos especificados nas outras respostas (e outros como
DebuggerNonUserCode
atributo) não funcionam mais da mesma maneira por padrão no Visual Studio 2015. O depurador interromperá as exceções no mercado de métodos com esses atributos, ao contrário das versões anteriores do VS. Para desativar o aprimoramento de desempenho que alterou seu comportamento, você precisa alterar uma configuração de registro:Mais informações podem ser encontradas no blog do Visual Studio .
(Isso provavelmente deve ser um comentário sobre a resposta principal, mas não tenho representantes suficientes)
fonte
Você não é capaz de destacar uma exceção lançada em um local específico em seu código. No entanto, você pode desativar exceções de um tipo específico.
Se seu próprio código gerar a exceção em questão, eu faria uma exceção personalizada, derivada de tudo o que se encaixar, e, em seguida, desabilitaria a quebra de depuração neste tipo derivado.
Desativar exceções do sistema como NullReferenceException afetará todo o sistema, o que obviamente não é desejável durante o desenvolvimento.
Observe que há dois tipos de comportamento de quebra para exceções:
Você pode remover a verificação em 'Thrown' para o NullReferenceException, que lhe dará o benefício de não quebrar cada vez que o sistema passar a linha em questão em seu código, mas ainda quebrar se você tiver alguma expecção NullReference não tratada ocorrendo em outras partes do sistema.
fonte