CA2201: não acionar tipos de exceção reservados
TypeName |
DoNotRaiseReservedExceptionTypes |
CheckId |
CA2201 |
Categoria |
Microsoft.Usage |
Alteração Significativa |
Quebra |
Causa
Um método gerencie um tipo de exceção que sejam muito geral ou que é reservado em tempo de execução.
Descrição da Regra
Os seguintes tipos de exceção são muito gerais fornecer informações suficientes para o usuário:
Os seguintes tipos de exceção são reservados e devem ser descartados somente por Common Language Runtime:
Não gerencie exceções gerais
Se você gerou um tipo de exceção geral, como Exception ou SystemException em uma biblioteca ou em uma estrutura, força consumidores para capturar todas as exceções, incluindo as exceções desconhecidas que não reconhecem a ser identificado.
Em vez disso, um ou outro geram um tipo mais derivada que já existe na estrutura, ou criar seu próprio tipo que deriva de Exception.
Exceções específicas de lançamento
A tabela a seguir mostra os parâmetros e que exceções para gerar ao validar o parâmetro, incluindo o parâmetro de valor no acessador set de uma propriedade:
Descrição do parâmetro |
Exceção |
---|---|
referência denull |
|
Fora do intervalo de valores permitido (como um índice para uma coleção ou lista) |
|
Valor inválido de enum |
|
Contém um formato que não atende as especificações de parâmetro de um método (como a cadeia de caracteres de formato para ToString(String)) |
|
Se não inválido |
Quando uma operação não é válida para o estado atual do lançamento do objeto InvalidOperationException
Quando uma operação é executada em um objeto que geram é descartado ObjectDisposedException
Quando uma operação não é (como em Stream.Write substituído em um fluxo aberto para leitura) geram suporte NotSupportedException
Quando uma conversão resultaria em um lançamento OverflowExceptionde estouro (como em uma sobrecarga explícita do operador cast)
Para todas situações restantes, considere criar seu próprio tipo que deriva de Exception e lançamento do.
Como Corrigir Violações
Para corrigir uma violação desta regra, altere o tipo de exceção lançada para um tipo específico que não seja um dos tipos permitidos.
Quando Suprimir Alertas
Não elimine um alerta desta regra.