Partilhar via


CA2219: Não levante exceções em cláusulas de exceção

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.

CA1065: Não gere exceções em locais inesperados

Consulte também