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.
A regra CA2200 do analisador de código .NET está habilitada, por padrão, a partir do .NET 5. Ele produz um aviso de compilação para quaisquer catch blocos que relançam uma exceção e a exceção é explicitamente especificada na throw instrução.
Alterar descrição
A partir do .NET 5, o SDK do .NET inclui analisadores de código-fonte do .NET. Várias dessas regras estão habilitadas, por padrão, incluindo CA2200. Se o seu projeto contém código que viola essa regra e está configurado para tratar avisos como erros, essa alteração pode quebrar sua compilação.
A regra CA2200 sinaliza código onde as exceções são relançadas e a variável de exceção é especificada na expressão. Quando uma exceção é lançada, parte das informações que ela carrega é o rastreamento de pilha. O rastreamento de pilha é uma lista da hierarquia de chamada de método que começa com o método que lança a exceção e termina com o método que captura a exceção. Se uma exceção for relançada ao especificar a exceção na throw instrução, o rastreamento de pilha reiniciar-se-á no método atual e perde-se a lista de chamadas de método entre o método original que lançou a exceção e o método atual. Para manter as informações de rastreamento de pilha originais com a exceção, use a throw instrução sem especificar a exceção.
O trecho de código a seguir não produz um aviso para a regra CA2200. No entanto, a linha comentada desencadearia uma violação.
catch (ArithmeticException e)
{
// throw e;
throw;
}
Versão introduzida
5.0
Ação recomendada
Relançar exceções sem especificar a exceção explicitamente. Para obter mais informações, consulte CA2200.
Para desativar completamente a análise de código, defina
EnableNETAnalyzerscomofalseno arquivo de projeto. Para obter mais informações, consulte EnableNETAnalyzers.
APIs afetadas
Não detetável através da análise API.