Try-Catch-Finally
Las
excepciones son un tipo de error que ocurre durante la ejecución de una
aplicación. Los errores suelen ser problemas que no se esperan. Considerando
que, se espera que ocurran excepciones dentro
del código de la aplicación por varias razones.
Las aplicaciones usan lógica
de manejo de excepciones para manejar explícitamente las excepciones cuando
ocurren. Las excepciones pueden ocurrir por una amplia variedad de
razones. Desde la infame NullReferenceException hasta un tiempo de espera
de consulta de base de datos.
La anatomía de las excepciones de C#
Las excepciones permiten que
una aplicación transfiera el control de una parte del código a otra. Cuando
se lanza una excepción, el flujo actual del código se interrumpe y se devuelve
a un bloque try catch principal. El manejo de excepciones de C# se realiza
con las siguientes palabras clave: probar, atrapar, finalmente y lanzar
·
try : se utiliza un bloque de prueba para encapsular una región de
código. Si algún código arroja una excepción dentro de ese bloque de
prueba, la excepción será manejada por el catch correspondiente.
·
catch : cuando ocurre una excepción, se ejecuta el bloque de código
Catch. Aquí es donde puede manejar la excepción, registrarla o ignorarla.
· finally : el bloque finalmente le permite ejecutar cierto código si se lanza una excepción o no. Por ejemplo, deshacerse de un objeto que debe ser desechado.
· throw : la palabra clave throw se usa para crear realmente una nueva excepción que se convierte en un bloque de prueba y captura final.
Excepciones comunes de .NET
El manejo adecuado de
excepciones es fundamental para todo el código de la aplicación. Hay
muchas excepciones estándar que se utilizan con frecuencia. La más común
es la temida excepción de referencia nula. Estos son algunos de los tipos
comunes de excepción de C# que verá regularmente.
La siguiente es una lista de
excepciones comunes de .NET:
·
System.NullReferenceException:
excepción muy común relacionada con llamar a un método en una referencia de
objeto nulo
·
System.IndexOutOfRangeException:
se produce al intentar acceder a un elemento de matriz que no existe
·
System.IO.IOException: se
usa en muchas operaciones de tipo E/S de archivos
·
System.Net.WebException:
comúnmente arrojado alrededor de cualquier error al realizar llamadas HTTP
·
System.Data.SqlClient.SqlException:
varios tipos de excepciones de SQL Server
·
System.StackOverflowException:
si un método se llama a sí mismo de forma recursiva, puede obtener esta
excepción
·
System.OutOfMemoryException:
si su aplicación se queda sin memoria
·
System.InvalidCastException:
si intenta convertir un objeto en un tipo al que no se puede convertir
·
System.InvalidOperationException:
excepción genérica común en muchas bibliotecas
·
System.ObjectDisposedException:
intentar usar un objeto que ya se ha eliminado
DEMOSTRACIÓN
En un aplicativo de consola, vamos a crear una clase denominada División, en ella colocaremos el clasico ejemplo de división (vaya la redundancia) para explicar las excepciones, como se muestra a continuación:
El resultado de la consola me muestra el mensaje de excepción
Cambiamos los valores a pasar en el metodo dividir:
Volvemos a ejecutar el debug, en este caso no captura ningún tipo de excepción pero luego de ello pasa por el código que esta en el bloque finally
El resultado en la consola
Ahora crearemos otro aplicativo de consola para ver la función de la clausula Throw