MEJOR SITIO PARA DESARROLLADORES WEB
Lenguaje C#. W3Schools lecciones en español

Ua En De

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.
Inténtalo tú mismo »

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.
Inténtalo tú mismo »

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.
Inténtalo tú mismo »

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:

Ejemplo

checkAge(20);

La salida será:

Access granted - You are old enough!
Inténtalo tú mismo »