¿Cuáles son algunas de las mejores prácticas para la creación de mi propia excepción personalizada?
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?
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:
throw new Exception("Bar happened in Foo");
throw new FooException("Bar happened");
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.