Compartilhar via


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 

ArgumentNullException

Fora do intervalo de valores permitido (como um índice para uma coleção ou lista)

ArgumentOutOfRangeException

Valor inválido de enum

InvalidEnumArgumentException

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))

FormatException

Se não inválido

ArgumentException

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.

Regras Relacionadas

CA1031: não capturar tipos de exceção gerais