En este artículo se explica cómo utilizar un bloque try-catch-finally para interceptar una excepción.
Un bloque try-catch-finally es un contenedor que se pone alrededor del código donde es posible
que se produzca una excepción.
Dim i as Integer = 10
Dim j as Integer = 0
Dim k As Integer k = i/j ' Error en esta línea.
Presione la tecla F5 para ver la excepción.
Ponga una instrucción try-catch alrededor del código para capturar el error. El código siguiente
intercepta todos los errores iniciados en el código y muestra un mensaje de error genérico.
Reemplace el código del procedimiento Sub Main() por el código siguiente:
Dim i as Integer = 10
Dim j as Integer = 0
Dim k As Integer k = i/j ' Error en esta línea. El control pasa al bloque catch.
Catch
Console.WriteLine("Error.")
End Try
Presione CTRL+F5 para ejecutar el proyecto. Observe que aparecerá el mensaje de error del
bloque catch.
Si es preciso realizar alguna tarea de limpieza o postproceso independientemente de que se
produzca o no un error, utilice la parte finally de la instrucción try-catch-finally. El código de la
parte finally de la instrucción se ejecuta siempre, independientemente de que haya o no una
excepción. En la consola aparecerá el código siguiente, "Esta instrucción se imprime siempre",
aunque no aparezca ningún error. Reemplace el código de Sub Main() por el código siguiente:
Dim i as Integer = 10
Dim j as Integer = 0
Dim k As Integer k = i/j ' Error en esta línea. El control pasa al bloque catch.
Catch
Console.WriteLine("Error.")
Finally ' Esta sección se ejecuta independientemente del proceso anterior.
Console.WriteLine()
Console.WriteLine("Esta instrucción se imprime siempre")
End Try
Presione CTRL+F5 para ejecutar el proyecto.
Puede utilizar el objeto de excepción con la instrucción catch para recuperar detalles acerca de la
excepción. Una excepción tiene varias propiedades que pueden ayudarle a identificar información
de ayuda, origen o incluso pila acerca de una excepción. Esta información puede ser muy útil para
hacer un seguimiento de la causa original de la excepción o para proporcionar una explicación
mejor de su origen. El ejemplo siguiente intercepta una excepción y muestra un mensaje de error
específico. Como antes, puede reemplazar el código del procedimiento Sub Main() por el código
siguiente:
Ejemplo 1:
' Este código muestra cómo interceptar una excepción.
Try
Console.WriteLine("Vamos a dividir 10 entre 0 y ver lo que ocurre...")
Console.WriteLine()
Dim i as Integer = 10
Dim j as Integer = 0
Dim k As Integer k = i/j ' Error en esta línea. El control pasa al bloque catch.
Ejemplo 2:
' Este código muestra cómo interceptar una excepción.
Try
Console.WriteLine("Vamos a dividir 10 entre 0 y ver lo que ocurre...")
Console.WriteLine()
Dim i as Integer = 10
Dim j as Integer = 0
Dim k As Integer k = i/j ' Error en esta línea. El control pasa al bloque catch.
Try
File.Create("c:/temp/test.txt") ' Puede fracasar por diversos motivos
Catch ioe As System.IO.IOException ' Este error puede ocurrir si la carpeta Temp no existe.
Console.WriteLine("Error de E/S. La carpeta c:\temp no existe")