🚩Excepciones

Eventos durante la ejecución cuando algo inesperado ocurre. Permiten gestionar estos eventos y tomar medidas, como mostrar un mensaje de error.

try
{
    // Código que puede causar una excepción
}
catch (TipoExcepcion ex)
{
    // Código si ocurre una excepción del tipo especificado
    Console.WriteLine(ex.Message);
}
finally
{
    // Código que se ejecuta siempre
}
class Program
{
    static void Main()
    {
        try
        {
            int divisor = 0;
            int resultado = 10 / divisor; // DivideByZeroException
        }
        catch (DivideByZeroException ex)
        {
            Console.WriteLine($"Error: {ex.Message}");
        }
        finally
        {
            Console.WriteLine("Este bloque se ejecuta siempre.");
        }
    }
}
Excepción
Descripción

System.Exception

La clase base para todas las excepciones en .NET.

System.SystemException

Clase base para todas las excepciones predefinidas del sistema.

System.IndexOutOfRangeException

Se produce cuando se intenta acceder a un índice fuera de los límites de una matriz o colección.

System.NullReferenceException

Se lanza cuando se intenta usar una referencia que no apunta a ningún objeto.

System.InvalidOperationException

Se produce cuando un método se llama en un estado no válido.

System.ArgumentException

Se lanza cuando un argumento proporcionado a un método no es válido.

System.ArgumentNullException

Se lanza cuando se pasa un argumento nulo a un método que no lo admite.

System.ArgumentOutOfRangeException

Se produce cuando un argumento está fuera del rango de valores permitidos.

System.FormatException

Se lanza cuando el formato de un argumento no es válido, o cuando una cadena de formato no tiene el formato correcto.

System.InvalidCastException

Se lanza cuando una conversión de tipo o casting es inválido.

System.ObjectDisposedException

Se produce cuando se realiza una operación en un objeto que ha sido eliminado.

System.NotImplementedException

Se lanza cuando un método solicitado o una operación no está implementada.

System.IO.IOException

Clase base para las excepciones que se producen durante la entrada/salida.

System.TimeoutException

Se lanza cuando se supera el tiempo de espera de una operación.

System.OverflowException

Se produce cuando una operación aritmética, de casting o de conversión en una operación matemática produce un desbordamiento.

System.DivideByZeroException

Se lanza cuando se intenta dividir un valor numérico por cero.

System.StackOverflowException

Se produce cuando hay un desbordamiento de pila debido a una recursividad excesiva o a un uso excesivo de la pila.

📘 Concepto de Excepción Personalizada

Las excepciones personalizadas son clases que extienden de Exception o alguna de sus subclases.

Se utilizan para representar errores específicos que no están cubiertos por las excepciones estándar de .NET.

🔨 Creación de una Excepción Personalizada

Para crear una excepción personalizada, debes definir una clase que herede de Exception.

Es común agregar constructores que permitan pasar mensajes de error y otra excepción como causa interna.

public class MiExcepcionPersonalizada : Exception
{
    public MiExcepcionPersonalizada() : base() { }

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

    public MiExcepcionPersonalizada(string message, Exception inner) : base(message, inner) { }
}

Lanzamiento de Excepciones Personalizadas Utiliza

Se usa throw para lanzar tu excepción personalizada cuando se detecte una condición de error específica.

if(condicionDeError)
{
    throw new MiExcepcionPersonalizada("Descripción del error");
}

ó

try
{
    // Código que puede lanzar MiExcepcionPersonalizada
}
catch (MiExcepcionPersonalizada ex)
{
    // Manejo específico para MiExcepcionPersonalizada
}
catch (Exception ex)
{
    // Manejo de cualquier otra excepción no específica
}

OJO!

Orden de Bloques Catch: Es crucial ordenar los bloques catch de más específico a más general para asegurar que las excepciones se manejen correctamente. Un bloque catch incorrectamente ordenado puede capturar excepciones de forma prematura y ocultar errores importantes.

Última actualización