2010-10-04 718 views

Respuesta

11

Es prácticamente el mismo, ya que es en Java - que se extienden a la clase Exception.

En la forma más básica.

public class CustomException : System.Exception 
{ 
    public CustomException() 
    { 
    } 

    public CustomException(string message) 
    : base(message) 
    { 
    } 

    public CustomException(string message, System.Exception innerException) 
    : base(message, innerException) 
    { 
    } 
} 

Para esto, agregue los datos que desea capturar mediante campos o propiedades.

Fuera de interés, antes de responder a esta pregunta, consulté las líneas de diseño de Microsoft en Excepciones personalizadas. Designing Custom Exceptions (MSDN)

  1. Evite las jerarquías de espacios de nombres profundos.
  2. Si es posible, obtenga una de las excepciones de base común proporcionadas, es decir, ArgumentException. SIN EMBARGO No deriva de ApplicationException. No es dañino, no tiene sentido hacerlo. MSDN Blog Post on ApplicationException.
  3. Use el sufijo "Excepción".
  4. Hacer las excepciones serializables implementando la interfaz ISerializable. Aparentemente, una excepción debe ser serializable para funcionar correctamente en el dominio de la aplicación y los límites remotos.
  5. Almacene la información sensible a la seguridad en un estado de excepción privada, agregue un atributo SecurityPermission para garantizar que solo el código de confianza pueda obtener la información.

I altamente recomiendo la lectura del Design Guidelines en MSDN.

16

Desea heredar de System.Exception y, preferiblemente, proporcionar (como mínimo) los mismos constructores públicos y pasar los parámetros a los constructores base. Agregue las propiedades y/o métodos relevantes que considere apropiados para su necesidad particular.

public class MyException : System.Exception 
{ 
    public MyException() : base() { } 
    public MyException(string message) : base(message) { } 
    public MyException(string message, Exception innerException) : base(message, innerException) { } 
} 
+0

Según las Pautas de diseño de .NET Framework, se supone que debes heredar directamente de Exception a menos que tengas una buena razón para elegir algo más. –

+0

@Jonathan: todos los sistemas vuelven a la normalidad. Borré mi estúpida respuesta y eliminé mi inútil comentario. Votaron la respuesta en nombre del espíritu SO. Gracias por la corrección. –

Cuestiones relacionadas