¿Cuáles son algunas de las mejores prácticas para la creación de mi propia excepción personalizada?

StackOverflow https://stackoverflow.com/questions/54851

  •  09-06-2019
  •  | 
  •  

Pregunta

En un seguimiento a un la pregunta anterior en cuanto a las excepciones, ¿cuáles son las mejores prácticas para la creación de una excepción personalizada en .NETA?

Más específicamente debe heredar de Sistema.Excepción, Sistema.ApplicationException o alguna otra base de excepción?

¿Fue útil?

Solución

Heredar de System.Exception. System.ApplicationException es inútil y las pautas de diseño de decir "No tirar o se deriven de System.ApplicationException."

Ver http://blogs.msdn.com/kcwalina/archive/2006/06/23/644822.aspx

Otros consejos

En el C# IDE, tipo de 'excepción' y presione TAB.Este se expanda para empezar a escribir un nuevo tipo de excepción.No hay comentarios mimbres enlaces a algunos de discusión de excepción prácticas.

Personalmente, soy un gran fan de la creación de un montón de clases pequeñas, a las que se extiende a los tipos de excepción.Por ejemplo, en la escritura de la clase Foo, puedo elegir entre:

  1. throw new Exception("Bar happened in Foo");
  2. throw new FooException("Bar happened");
  3. throw new FooBarException();

donde

class FooException : Exception 
{
    public FooException(string message) ... 
}

y

class FooBarException : FooException 
{
    public FooBarException() 
        : base ("Bar happened") 
    {
    }
}

Yo prefiero la 3ª opción, porque yo lo veo como una OO solución.

Hay un fragmento de código para ello.El uso que.Además, revise su código de análisis a posteriori;el fragmento de código que deja fuera a uno de los constructores se debe implementar.

Creo que la única cosa más importante a recordar cuando se trata con las excepciones a cualquier nivel (haciendo costumbre, lanzar, atrapar) es que las excepciones son sólo para condiciones excepcionales.

La base de la excepción de todos los demás excepciones se heredan de System.Excepción, y que es lo que debe heredar, a menos que por supuesto usted tiene un uso para cosas como, por ejemplo, por defecto los mensajes de una forma más específica de excepción.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top