Share via


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

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 8 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.

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.

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

Confira também