Buscador

Manipulación estructurada de errores - III

Tanto si se produce un error como si no, la sentencia Finally de la estructura Try...End Try, nos permite escribir un bloque de código que será ejecutado al darse una condición de error, o bajo ejecución normal del procedimiento. 
El Código fuente 352 muestra el mismo ejemplo anterior, pero introduciendo un bloque Finally. Pruebe el lector alternativamente, a forzar un error, y a ejecutar sin errores este fuente; en ambos casos verá que el bloque Finally es ejecutado. Para completar el ejemplo, tras la estructura Try...End Try se han escrito varias líneas de código potencialmente problemáticas; en el caso de que se produzca un error, la ejecución será cancelada, al no estar dichas líneas situadas en un controlador de errores.

Public Sub Main()
Dim sValor As String
Dim iNumero As Integer
Try
' comienza el control de errores
Console.WriteLine("Introducir un número")
sValor = Console.ReadLine()
' si no hemos introducido un número...
iNumero = sValor ' ...aquí se producirá un error...
' ...y no llegaremos a esta parte del código
iNumero = iNumero + 1000
Catch
' si se produce un error, se genera una excepción
' que capturamos en este bloque de código
' manipulador de excepción, definido por Catch
Console.WriteLine("Error al introducir el número" & _
ControlChars.CrLf & _
"El valor {0} es incorrecto", _
sValor)
Finally
' si se produce un error, después de Catch se ejecuta este bloque;
' si no se produce error, después de Try también se ejecuta
Console.WriteLine("El controlador de errores ha finalizado")
End Try
' resto del código del procedimiento
Dim dtFecha As Date
Console.WriteLine("Introducir una fecha")
' si ahora se produce un error,
' al no disponer de una estructura para controlarlo
' se cancelará la ejecución
dtFecha = Console.ReadLine()
Console.WriteLine("La fecha es {0}", dtFecha)
Console.ReadLine()
End Sub
Código fuente 352

No hay comentarios:

Publicar un comentario