Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
| Property | valor |
|---|---|
| ID da regra | CA2219 |
| Título | Não levante exceções em cláusulas de exceção |
| Categoria | Utilização |
| A correção está quebrando ou não quebrando | Inquebrável, Quebrando |
| Habilitado por padrão no .NET 10 | Como sugestão |
Motivo
Uma exceção é lançada a partir de uma finallycláusula , filtro ou falha.
Descrição da regra
Quando uma exceção é gerada em uma cláusula de exceção, isso aumenta muito a dificuldade de depuração.
Quando uma exceção é gerada em uma finally cláusula ou cláusula de falha, a nova exceção oculta a exceção ativa, se presente. Isso torna o erro original difícil de detetar e depurar.
Quando uma exceção é gerada em uma cláusula de filtro, o tempo de execução captura silenciosamente a exceção e faz com que o filtro seja avaliado como false. Não há como diferenciar o filtro de ser falso e uma exceção ser lançada de um filtro. Isso dificulta a deteção e depuração de erros na lógica do filtro.
Como corrigir violações
Para corrigir essa violação desta regra, não levante explicitamente uma exceção de uma finallycláusula de filtro ou falha.
Example
try
{
// ...
}
finally
{
// This code violates the rule.
throw new Exception();
}
Quando suprimir avisos
Não suprima um aviso para esta regra. Não há cenários em que uma exceção gerada em uma cláusula de exceção forneça um benefício para o código de execução.
Regras conexas
CA1065: Não gere exceções em locais inesperados