C# Excepciones - Try..Catch
C# Excepciones
Al ejecutar código C# pueden ocurrir diferentes errores: errores de codificación cometidos por el programador, errores por entradas incorrectas u otras cosas imprevisibles.
Cuando ocurre un error, C# normalmente se detendrá y generará un mensaje de error. El término técnico para esto es: C# generará una excepción (arrojará un error).
C# try y catch
La instrucción try
le permite definir un bloque de código que se probará en busca de errores mientras se ejecuta.
La instrucción catch
le permite definir un bloque de código que se ejecutará si se produce un error en el bloque try.
Las palabras clave try
y catch
vienen en pares:
Sintaxis
try
{
// Bloque de código para probar
}
catch (Exception e)
{
// Bloque de código para manejar errores
}
Considere el siguiente ejemplo, donde creamos una matriz de tres números enteros:
Esto generará un error porque misNúmeros[10] no existe.
int[] myNumbers = {1, 2, 3};
Console.WriteLine(myNumbers[10]); // error!
El mensaje de error será algo como esto:
System.IndexOutOfRangeException: 'Index was outside the bounds of the array.'
Si ocurre un error, podemos usar try...catch
para detectar el error y ejecutar algún código para manejarlo.
En el siguiente ejemplo, utilizamos la variable dentro del bloque catch (e
) junto con el mensaje integrado Message
, que genera un mensaje que describe la excepción:
Ejemplo
try
{
int[] myNumbers = {1, 2, 3};
Console.WriteLine(myNumbers[10]);
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
La salida será:
Index was outside the bounds of the array.
También puede generar su propio mensaje de error:
Ejemplo
try
{
int[] myNumbers = {1, 2, 3};
Console.WriteLine(myNumbers[10]);
}
catch (Exception e)
{
Console.WriteLine("Something went wrong.");
}
La salida será:
Something went wrong.
Finally
La instrucción finally
le permite ejecutar código, después de try...catch
, independientemente del resultado:
Ejemplo
try
{
int[] myNumbers = {1, 2, 3};
Console.WriteLine(myNumbers[10]);
}
catch (Exception e)
{
Console.WriteLine("Something went wrong.");
}
finally
{
Console.WriteLine("The 'try catch' is finished.");
}
La salida será:
Something went wrong.
The 'try catch' is finished.
La palabra clave throw
La instrucción throw
le permite crear un error personalizado.
La instrucción throw
se utiliza junto con una clase de excepción. Hay muchas clases de excepción disponibles en C#: ArithmeticException
, FileNotFoundException
, IndexOutOfRangeException
, TimeOutException
, etc:
Ejemplo
static void checkAge(int age)
{
if (age < 18)
{
throw new ArithmeticException("Access denied - You must be at least 18 years old.");
}
else
{
Console.WriteLine("Access granted - You are old enough!");
}
}
static void Main(string[] args)
{
checkAge(15);
}
El mensaje de error mostrado en el programa será:
System.ArithmeticException: 'Access denied - You must be at least 18 years old.'
Si age
fuera 20, no obtendrías una excepción: