Diseñar excepciones personalizadas
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 comunicación remota.
Para obtener información sobre cómo hacer que un tipo sea serializable, vea Serialization.
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.
}
}
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.
}
};
Facilite la información confidencial de seguridad a través de un reemplazo de System.Object.ToString sólo después de exigir un permiso adecuado. Si no termina correctamente la solicitud de permiso, devuelva una cadena que no incluya la información confidencial de seguridad.
Almacene la información confidencial de seguridad útil en estado de excepción privado. Asegúrese de que sólo el código de confianza puede obtener la información.
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 “las instrucciones de diseño de Framework: Convenciones, frases realizadas y modelos para libro de bibliotecas reutilizables de .NET” de Krzysztof Cwalina y Brad Abrams, publicados 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