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 runtime.
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 manipular.
Em vez disso, lançar um tipo mais derivado que já existe no framework, ou criar seu próprio tipo que deriva do 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 lançar um objetoSystem.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) throw System.NotSupportedException
Quando uma conversão resultaria em um estouro (como em uma sobrecarga de operador de conversão explícita) throwSystem.OverflowException
Para outras situações, considere a criação de seu próprio tipo que deriva do 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, não é um dos tipos de reservado.
Quando suprimir avisos
Não suprimir um aviso da regra.