Excepciones en C# (CSharp)
Cuando
durante la ejecución de un programa ocurre un error que impide su continuación,
por ejemplo, una entrada incorrecta de datos o un formato de salida no correcto,
C# lanza una excepción, que si no se captura da lugar a un mensaje de error y
detiene la ejecución (las excepciones se lanzan, no ocurren). Ahora si lo que
deseamos es que la ejecución del programa no se detenga, habrá que capturarla y
manejarla adecuadamente en un intento de reanudar la ejecución.
Las
excepciones en C# son objetos de subclases de Exception. Por
ejemplo, el espacio de nombres System define la clase
base SystemException para las excepciones predefinidas; por
ejemplo: aritméticas, de formato, intentar acceder a un elemento de una matriz
con un índice fuera de límites, etc. Para capturar una excepción hay que hacer
dos cosas: una, poner a prueba el código que puede lanzar excepciones dentro de
un bloque try; y dos, manejar la excepción cuándo se lance, en un
bloque catch. Por ejemplo:
try {
//Código que puede lanzar una excepción
Console.WriteLine("{0:f} + {1:f} =
{2:d}", a, b, c);
} catch(Exception e) {
//Manejar una excepción de la clase Exception
System.Console.WriteLine("Error: " + e.Message);
}
En el
ejemplo anterior, cuándo se lance una excepción del tipo Exception por
que se produjo un error debido a la ejecución de una operación de
entrada/salida, el objeto e almacenará la información relativa
al error ocurrido, información que puede ser manipulada a través de las
propiedades y métodos de su clase; por ejemplo, Message muestra
un mensaje indicando qué error ocurrió. En el ejemplo anterior, al especificar
que el tipo de excepciones que se desea atrapar son de la clase Exception,
cabe cualquier excepción de cualquier clase derivada de Exception.
Si quisiéramos filtrar un tipo particular de excepciones deberemos indicarlo
explícitamente. Por ejemplo, cuándo ejecute el siguiente programa, observa que
lanza una excepción de la clase FormatException por utilizar
un formato d para mostrar un valor double. Por
tanto, dicha excepción será atrapada por el primer bloque catch.
Cuándo una excepción se atrapa, se considera manipulada.
using System;
class Test {
public static void Main(string[] args) {
double a = 10, b = 20, c = 0;
try {
c = a + b;
Console.WriteLine("{0:f} + {1:f} =
{2:d}", a, b, c);
} catch(FormatException) {
Console.WriteLine("Ha ocurrido
un error de formato");
} catch(Exception e) {
Console.WriteLine("Error: "+
e.Message);
}
}
}
DEMOSTRACIÓN
En Visual Studio vamos a dar click en menú File à New à Project
En la Ventana emergente le damos click a Window, seleccionamos
la opción “Console Application” y espacio Name colocamos el nombre del proyecto
que para el Ejemplo es “Demo 2 20483” y luego presionamos el botón OK
En la ventana de código, debajo del método Main()
escribiremos los métodos siguientes:
Luego escribiremos otra serie de métodos que contienen
una serie de parámetros y devuelven un resultado de un cálculo cualquiera:
Luego escribiremos los métodos que nos servirán como
ejemplo para el manejo y control de excepciones:
En el método Main() escribiremos el código para
ejecutar dichos métodos:
Al ejecutar la solución
La salida en pantalla la visualizaríamos de la
siguiente forma: