Tracks
/
C#
C#
/
Temario
/
Excepciones definidas por el usuario
Ex

Excepciones definidas por el usuario en C#

1 ejercicio

Acerca de Excepciones definidas por el usuario

Una excepción definida por el usuario es cualquier clase que definas en tu código y que derive de System.Exception. Está sujeta a todas las reglas de la herencia de clases, pero además el compilador y el entorno de ejecución del lenguaje tratan estas clases de forma especial, lo que permite lanzar y capturar sus instancias fuera del flujo de control normal, como se explica en el ejercicio exceptions. Las excepciones definidas por el usuario se pueden usar de la misma manera que las excepciones del entorno de ejecución y de la Biblioteca de clases base de Microsoft.

Este trato especial solo se aplica a las clases derivadas de Exception. No puedes lanzar instancias de ningún otro tipo.

A menudo, las excepciones definidas por el usuario se usan para transportar información adicional, como un mensaje y otros datos relevantes, que esté disponible para las rutinas que las capturan. Después, esa información se puede anotar en registros, comunicar al usuario o quizá usar en un reintento. System.Exception tiene miembros de datos cómodos y constructores adecuados para almacenar un mensaje y la excepción «interna».

Por convención, los nombres de las clases de excepción terminan en «Exception», por ejemplo, MyTerribleException.

Aunque usar excepciones definidas por el usuario para envolver y mejorar excepciones de terceros es un patrón muy habitual, el consejo general es no abusar de ellas en tu propio código fuera de este caso de uso. Se considera un antipatrón. Esta opinión tiene detractores y puedes ver ambos lados del debate en esta publicación de Stack Exchange.

Este artículo es una buena introducción a las excepciones definidas por el usuario.

Como parte de sus recomendaciones sobre crear y lanzar excepciones, el equipo de .NET recomienda que las excepciones definidas por el usuario tengan varios constructores de conveniencia. Para la mayoría de los propósitos, la combinación que se ilustra a continuación es adecuada.

public class IncompleteExerciseException : System.Exception
{
    public IncompleteExerciseException() : base() { }
    public IncompleteExerciseException(string message) : base(message) { }
    public IncompleteExerciseException(string message, System.Exception inner) : base(message, inner) { }
}
Editar en GitHub El enlace se abre en una nueva ventana o pestaña

Aprende Excepciones definidas por el usuario