Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
| Propriedade | Valor |
|---|---|
| ID da regra | CA2219 |
| Título | Não lançar exceções em cláusulas de exceção |
| Categoria | Usage |
| Correção é disruptiva ou não disruptiva | Sem interrupção, com interrupção |
| Habilitado por padrão no .NET 10 | Como sugestão |
| Idiomas aplicáveis | C# e Visual Basic |
Causa
Uma exceção é gerada por uma cláusula de finally, filtro ou falha.
Descrição da regra
Quando uma exceção é gerada em uma cláusula de exceção, aumenta consideravelmente a dificuldade de depuração.
Quando uma exceção é gerada em uma cláusula finally ou cláusula de falha, a nova exceção oculta a exceção ativa, se presente. Isso torna o erro original difícil de detectar e depurar.
Quando uma exceção é gerada em uma cláusula de filtro, o runtime a captura silenciosamente e faz com que o filtro seja avaliado como falso. Não há como distinguir entre o filtro avaliado como falso e uma exceção lançada por um filtro. Isso dificulta a detecção e a depuração de erros na lógica do filtro.
Como corrigir violações
Para corrigir essa violação de regra, não levante explicitamente uma exceção a partir de uma cláusula de finally, filtro ou falha.
Example
try
{
// ...
}
finally
{
// This code violates the rule.
throw new Exception();
}
Quando suprimir avisos
Não suprima um aviso dessa regra. Não há cenários nos quais uma exceção gerada em uma cláusula de exceção ofereça um benefício para o código em execução.
Regras relacionadas
CA1065: Não acionar exceções em locais inesperados