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.
| Property | Valor |
|---|---|
| ID da regra | CA2219 |
| Título | Não acionar exceções em cláusulas de exceção |
| Categoria | Usage |
| Correção com ou sem interrupção | Sem interrupção, com interrupção |
| Habilitado por padrão no .NET 10 | Como sugestão |
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 de finally ou 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 dizer a diferença entre o filtro que está sendo avaliado como falso e uma exceção que está sendo gerada 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 gere explicitamente uma exceção 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