Compartilhar via


Exceções devem ser públicas

TypeName

ExceptionsShouldBePublic

CheckId

CA1064

Category (Categoria)

Microsoft.Design

Quebrando alterar

Não separável

Causa

Uma exceção não-públicos deriva diretamente de System.Exception, System.SystemException, ou System.ApplicationException.

Descrição da regra

Uma exceção interna só é visível dentro de seu próprio escopo interno.Depois que a exceção cair fora do escopo interno, somente a exceção base pode ser usada para capturar a exceção.Se a exceção interna é herdada do T:sistema. Exception, T:sistema.SystemException ou T:sistema.ApplicationException, o código externo não terá informações suficientes para saber o que fazer com a exceção.

Mas, se o código possui uma exceção pública que posteriormente é usada sistema autônomo base para uma exceção interna, é razoável presumir que o código ainda mais check-out será capaz de fazer algo inteligente com a exceção de base.A exceção pública terão mais informações do que o que é fornecido pelo T:sistema. Exception, T:sistema.SystemException ou T:sistema.ApplicationException.

Como corrigir violações

Publique a exceção ou derivar a exceção interna de uma exceção pública que não é System.Exception, System.SystemException, ou System.ApplicationException.

Quando suprimir avisos

Suprimir uma mensagem a partir desta regra se você tiver certeza de que todos os casos que a exceção particular irá ser detectada no seu próprio escopo interno.

Exemplo

A seguir mostra três exemplos que violam a regra.