CA2201: Não aumente os tipos de exceção reservada
TypeName |
DoNotRaiseReservedExceptionTypes |
CheckId |
CA2201 |
<strong>Categoria</strong> |
Microsoft.Usage |
Alteração significativa |
Quebrando |
Causa
Um método gera um tipo de exceção que é geral demais ou que é reservado pelo tempo de execução.
Descrição da regra
Os seguintes tipos de exceção são muito gerais para fornecer informações suficientes para o usuário:
Os seguintes tipos de exceção são reservados e devem ser lançados somente pelo common language runtime:
Não jogue exceções gerais
Se você lança um tipo de exceção geral, como Exception ou SystemException em uma biblioteca ou estrutura, ela força os consumidores para interceptar todas as exceções, incluindo exceções desconhecidas que eles não sabem como tratar.
Em vez disso, o lançar um tipo mais derivado que já existe na estrutura ou criar seu próprio tipo que deriva de Exception.
Lançar exceções específicas
A tabela a seguir mostra os parâmetros e quais exceções lançar ao validar o parâmetro, incluindo o parâmetro value no acessador set de uma propriedade:
Descrição do parâmetro |
Exceção |
---|---|
nullreferência |
|
Fora do intervalo permitido de valores (como um índice para uma coleção ou lista) |
|
Inválido enum valor |
|
Contém um formato que não atende as especificações do parâmetro de um método (como, por exemplo, a seqüência de caracteres de formato para ToString(String)) |
|
Caso contrário inválido |
Quando uma operação é inválida para o estado atual de um objeto de throwSystem.InvalidOperationException
Quando uma operação é executada em um objeto que foi descartado throwSystem.ObjectDisposedException
Quando não há suporte para uma operação (como em uma substituição Stream.Write em um fluxo aberto para leitura) lançamSystem.NotSupportedException
Quando uma conversão resultaria em um estouro (como em uma sobrecarga de operador de conversão explícita) lançamSystem.OverflowException
Para todas as outras situações, considere a criação de seu próprio tipo que deriva de Exception e lançar que.
Como corrigir violações
Para corrigir uma violação desta regra, altere o tipo de exceção emitida para um tipo específico que não é um dos tipos de reservado.
Quando suprimir avisos
Não suprimir um aviso da regra.