Manejo de excepciones en C# (try, catch, finally)
Aprende a manejar excepciones en C# usando bloques try, catch y finally para gestionar errores de forma segura con ejemplos.
En C#, el manejo de errores permite capturar y controlar situaciones inesperadas durante la ejecución del programa.
Así se evita que el programa se bloquee de forma abrupta y se pueden mostrar mensajes adecuados o tomar acciones alternativas.
El manejo de errores utiliza los bloques try, catch y finally.
Uso de try-catch
El bloque try contiene código que puede generar una excepción.
Si ocurre un error, el bloque catch lo gestiona.
try
{
int numero = int.Parse("abc"); // Conversión inválida
Console.WriteLine("Número: " + numero);
}
catch (FormatException ex)
{
Console.WriteLine("Error: formato de número inválido.");
}
// Salida:
Error: formato de número inválido.
Múltiples bloques catch
Se pueden usar múltiples catch para diferentes tipos de error.
Así cada excepción puede manejarse de manera específica.
try
{
int[] numeros = { 1, 2, 3 };
Console.WriteLine(numeros[5]); // Índice fuera de rango
}
catch (IndexOutOfRangeException)
{
Console.WriteLine("Error: índice de arreglo fuera de rango.");
}
catch (Exception ex)
{
Console.WriteLine("Error inesperado: " + ex.Message);
}
Bloque finally
El bloque finally siempre se ejecuta, ocurra o no un error.
Normalmente se usa para cerrar archivos o liberar conexiones a bases de datos.
try
{
Console.WriteLine("Abriendo archivo...");
throw new Exception("¡Archivo no encontrado!");
}
catch (Exception ex)
{
Console.WriteLine("Error: " + ex.Message);
}
finally
{
Console.WriteLine("Cerrando archivo...");
}
// Salida:
Abriendo archivo...
Error: ¡Archivo no encontrado!
Cerrando archivo...
Lanzar excepciones personalizadas
Puede definir condiciones de error propias y lanzar excepciones con throw.
static void Dividir(int a, int b)
{
if (b == 0)
throw new DivideByZeroException("Error: ¡División por cero!");
Console.WriteLine("Resultado: " + (a / b));
}
static void Main()
{
try
{
Dividir(10, 0);
}
catch (DivideByZeroException ex)
{
Console.WriteLine("Error: " + ex.Message);
}
}
// Salida:
Error: ¡División por cero!
Resumen
try: Bloque con código que puede generar una excepción.catch: Captura y gestiona el error.finally: Siempre se ejecuta, normalmente para liberar recursos.throw: Permite lanzar excepciones personalizadas.- Múltiples
catchpermiten manejar diferentes tipos de error.