csharp-excepciones

Cómo usar excepciones en C#

Una excepción en C# es un objeto que representa un error que ocurre durante la ejecución de un programa. Cuando ocurre una excepción, el flujo normal del programa se interrumpe. Entonces se busca un bloque llamado try-catch que capture (y gestione) el error.

Es decir, cuando se produce una Excepcion esta puede,

  • Ser capturada por un bloque try-catch
  • Si no, pasa a la función que invocó a la que genero el error

Si no hay un bloque try-catch que capture la excepción, esta va “subiendo”. Si nadie la gestiona, la excepción llegará a la función principal (lo normal es que el programa termine abruptamente).

En C#, las excepciones son objetos de una clase que hereda de la clase base Exception. Esta clases proporcionan propiedades y métodos para obtener información sobre el error y realizar acciones en función de la excepción.

Lanzar una excepción

En C#, podemos lanzar una excepción nosotros mismos utilizando la palabra clave throw. Al lanzar una excepción, estamos indicando que ha ocurrido un error y queremos notificarlo al programa.

throw new Exception("Ocurrió un error");

En el ejemplo anterior, estamos lanzando una excepción de tipo Exception con un mensaje de error específico. Este mensaje se puede utilizar posteriormente para identificar el error y tomar las medidas necesarias.

Excepciones predefinidas

En C#, existen diferentes tipos de excepciones que podemos capturar utilizando el bloque try-catch. Algunos ejemplos de excepciones comunes son:

TimeoutException: Ocurre cuando una operación supera el tiempo de espera permitido. Por ejemplo, en operaciones de red o base de datos:

// Ejemplo simplificado
var client = new HttpClient();
client.Timeout = TimeSpan.FromSeconds(1);  // Timeout corto para el ejemplo
var response = await client.GetAsync("https://www.ejemplo.com");  // Lanzará TimeoutException si el tiempo de espera se excede

Estos son solo algunos ejemplos, pero existen numerosas excepciones predefinidas en C#.

Creando tus propias excepciones en .NET

Además de utilizar las excepciones predefinidas en .NET es posible crear nuestras propias excepciones personalizadas. Esto nos permite ser más específicos a la hora de gestionar los errores en tus aplicaciones.

Para crear nuestras propias excepciones, simplemente tenemos que crear una clase que herede de la clase base Exception (luego puedes agregar cualquier propiedad o método que necesites para proporcionar información adicional sobre el error).

Aquí hay un ejemplo de una clase de excepción personalizada:

public class MiExcepcion : Exception
{
    public MiExcepcion(string mensaje) : base(mensaje) { }
    public MiExcepcion(string mensaje, Exception innerException) : base(mensaje, innerException) { }
}

En el código anterior,

  • La clase MiExcepcion hereda de la clase Exception
  • Agrega dos constructores para proporcionar un mensaje de error y la posibilidad de incluir una excepción interna.

Una vez que tienes tu clase de excepción personalizada, puedes utilizarla en tu código de la misma manera que utilizarías cualquier otra excepción de .NET. Por ejemplo:

try
{
    // Código que puede generar una excepción
    throw new MiExcepcion("Error en mi aplicación");
}
catch (MiExcepcion ex)
{
    // Manejo de la excepción personalizada
}