Compartilhar via


Criação exceções de personalizada

As diretrizes a seguir ajudam a garantir que suas exceções personalizadas são criadas corretamente.

Evite as hierarquias de exceção detalhada.

Para obter mais informações, consulte Tipos e Namespaces.

Derive exceções System. Exception ou uma das outras exceções base comuns.

Observe que Captura e a inclusão de tipos de exceção padrão tem uma diretriz que afirma que você não deve derivar exceções personalizadas a partir de ApplicationException.

Finalize os nomes de classe de exceção com o sufixo de exceção.

As convenções de nomenclatura consistentes ajudam a reduzir a curva de aprendizado de novas bibliotecas.

Criar exceções serializável. Uma exceção deve ser serializável para funcionar corretamente através de limites de domínio e o remoting do aplicativo.

Para obter informações sobre como tornar um tipo serializável, consulte Serialization.

Fornece (pelo menos) os construtores comuns a seguintes em todas as exceções. Verifique se os nomes e tipos dos parâmetros são os mesmos daqueles usados no exemplo de código a seguir.

Public Class NewException
    Inherits BaseException
    Implements ISerializable

    Public Sub New()
        MyBase.New()
        ' Add implementation.
    End Sub

    Public Sub New(ByVal message As String)
        MyBase.New()
        ' Add implementation.
    End Sub

    Public Sub New(ByVal message As String, ByVal inner As Exception)
        MyBase.New()
        ' Add implementation.
    End Sub

    ' This constructor is needed for serialization.
    Protected Sub New(ByVal info As SerializationInfo, ByVal context As StreamingContext)
        MyBase.New()
        ' Add implementation.
    End Sub
End Class
public class NewException : BaseException, ISerializable
{
    public NewException()
    {
        // Add implementation.
    }
    public NewException(string message)
    {
        // Add implementation.
    }
    public NewException(string message, Exception inner)
    {
        // Add implementation.
    }

    // This constructor is needed for serialization.
   protected NewException(SerializationInfo info, StreamingContext context)
   {
        // Add implementation.
   }
}
public ref class NewException : BaseException, ISerializable
{
public:
    NewException()
    {
        // Add implementation.
    }

    NewException(String^ message)
    {
        // Add implementation.
    }

    NewException(String^ message, Exception^ inner)
    {
        // Add implementation.
    }

protected:
    // This constructor is needed for serialization.
    NewException(SerializationInfo info, StreamingContext context)
    {
        // Add implementation.
    }
};

Relate informações de sensíveis à segurança por meio de uma substituição de System.Object.ToString somente após exigindo uma permissão apropriada. Se a demanda de permissão falhar, retorne uma seqüência de caracteres que não inclua as informações sensíveis à segurança.

Armazene informações úteis de sensíveis à segurança em estado de exceção particulares. Certifique-se de que somente o código confiável pode obter as informações.

Considere fornecer as propriedades de exceção para acesso programático às informações extras (além de seqüência de mensagem) relevantes para a exceção.

Portions Copyright 2005 Microsoft Corporation. Todos os direitos reservados.

Portions Copyright Addison-Wesley Corporation. Todos os direitos reservados.

Para obter mais informações sobre as diretrizes de design, consulte a "diretrizes de Design do Framework: Convenções, idiomas e padrões de reutilizável.Bibliotecas de rede" catálogo por Krzysztof Cwalina e Brad Abrams, publicado pela Addison-Wesley, 2005.

Consulte também

Conceitos

Escolhendo o tipo certo de exceção a ser lançada

Outros recursos

Diretrizes de Design para desenvolvimento bibliotecas de classe

Diretrizes de design para exceções