Compartir a través de


Diseñar excepciones personalizadas

Actualización: noviembre 2007

Las instrucciones siguientes ayudan a garantizar que sus excepciones personalizadas están correctamente diseñadas.

Evite las jerarquías de excepciones profundas.

Para obtener más información, vea Tipos y espacios de nombres.

Derive las excepciones de System.Exception o de una de las demás excepciones de base comunes.

Observe que Capturar y generar tipos de excepción estándar incluye una instrucción que especifica que no debería derivar excepciones personalizadas de ApplicationException.

Finalice los nombres de clases de excepción con el sufijo Exception.

Las convenciones de nomenclatura coherentes ayudan a suavizar la curva de aprendizaje para las nuevas bibliotecas.

Haga que las excepciones sean serializables. Una excepción debe ser serializable para funcionar correctamente atravesando dominios de aplicación y límites de interacción remota.

Para obtener información sobre cómo hacer que un tipo sea serializable, vea Serialización.

Proporcione (al menos) los siguientes constructores comunes en todas las excepciones. Asegúrese de que los nombres y tipos de los parámetros son iguales que los utilizados en el ejemplo de código siguiente.

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.
   }
}

Considere la posibilidad de proporcionar propiedades de excepción para tener el acceso mediante programación a información adicional (además de la cadena del mensaje) relativa a la excepción.

Portions Copyright 2005 Microsoft Corporation. Reservados todos los derechos.

Portions Copyright Addison-Wesley Corporation. Reservados todos los derechos.

Para obtener más información sobre las directrices de diseño, consulte el libro titulado "Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries" de Krzysztof Cwalina y Brad Abrams, publicado por Addison-Wesley, 2005.

Vea también

Conceptos

Elegir el tipo correcto de la excepción que se va a producir

Otros recursos

Instrucciones de diseño para desarrollar bibliotecas de clases

Instrucciones de diseño de excepciones