Run-Time Errors: Errores en Tiempo de Ejecución
Run-Time Errors, aquellos errores imprevistos que ocurren durante la ejecución de una aplicación, por ejemplo si el usuario olvido insertar el medio de almacenamiento en la unidad lectora o si selecciona una entrada de archivo inválida.
Es posible prevenir estos errores en tiempo de ejecución a través de manejadores de errores que atrapan o interceptan errores y pueden corregir el problema, esperar una respuesta por parte del usuario que solucione el error o almacenar los datos antes de terminar la aplicación, los errores que pueden ser controlados son llamados Trappable Errors y le proceso de interceptar o atrapar un error se conoce como error trapping.
Manejador de Error (error handler) es una rutina para atrapar y responder a errores en la aplicación. Se recomienda agregar un manejador de errores a cualquier procedimiento donde se pueda anticipar la posibilidad de un error en tiempo de ejecución.
Cuando una aplicación ocurre desde el ambiente de desarrollo Visual Basic muestra un mensaje que permite entrar en modo de búsqueda de errores (Debug) o terminar la aplicación.
Si un error ocurre en tiempo de ejecución cuando la aplicación está corriendo como un archivo ejecutable Visual Basic muestra un mensaje de error y termina la aplicación.
El proceso de diseñar un manejador de errores involucra 3 pasos:
- Establecer o habilitar un error trap (proceso de atrapar un error) indicando a la aplicación donde bifucar cuando ocurra un error.
Visual Basic habilita un error trap cuando ejecuta la sentencia
On Error
, el error trap permanece habilitado mientras el procedimiento contenido está activo. Sólo un error trap a la vez puede ser habilitado en cualquier procedimiento, por lo que un error trap debe residir en el procedimiento local, no es posible utilizar la sentenciaOn Error
para bifurcar hacia otro procedimiento.Para deshabilitar un error trap utilice la sentencia
On Error GoTo 0
. - Escribir una rutina de manejo de errores que responda a todos los errores anticipadamente.
El primer paso en la escritura de una rutina de manejo de errores es agregar una etiqueta para marcar el principio del manejo de errores. La etiqueta deberia tener un nombre descriptivo y seguida de un dos puntos (
:
).Una convención es colocar el código de manejo de errores al final del procedimiento con una sentencia
Exit Sub
oExit Function
inmediatamente antes de la etiqueta, esto permite al procedimiento eliminar la ejecución del manejo de errores si no ocurren errores. - Salir de la rutina de manejo de errores.
es posible salir de una rutina de manejo de errores utilizando la sentencia
Resume
oResume Next
, la sentenciaResume
podría ejecutar la línea de código que causa el error, mientras que la sentenciaResume Next
podría ejecutar la línea de código siguiente a la línea de código que causa el error.Por lo general se podría utilizar
Resume
en cualquier momento que el manejador de errores pueda corregir el error yResume Next
cuando el manejador de errores no puede corregir el error.
Resume
, regresa a la sentencia que causo el error, utilice esta sentencia para repetir una operación después de corregir el error.Resume Next
, regresa a la sentencia siguiente de una que causo el error.Resume línea o etiqueta
, regresa a una línea o número de línea especifica.
La sentencia On Error Resume Next
causa que los errores sean ignorados, si un error ocurre en tiempo de ejecución, el proceso continua con la línea siguiente.
La sentencia On Error GoTo 0
deshabilita el error trap.
Sub nombreProcedimiento()
On Error GoTo miManejadorDeErrores
'instrucciones
Exit Sub
miManejadorDeErrores:
'instrucciones
REsume[0]/Resume Next/Resume linea/Err.Raise:=número
End Sub
El objeto Err
contiene información acerca del error ocurrido, este objeto tiene propiedades y métodos que pueden utilizarse para checar que error ocurrio, para limpiar el valor del error o para causar un error.
Number
, entero que indica el último error ocurrido, en algunos casos el manejador de errores puede ser habilitado para corregir un error y continuar con el proceso sin interrumpir al usuario o notificar al usuario de un error y entonces tomar una acción basada en la respuesta del usuario.Description
, string que contiene una descripción del error ocurrido.Source
, contiene el nombre de la aplicación que genero el error.
El objeto Err
tiene 3 propiedades adicionales.
Private Sub abrirArchivo_Click()
On Error GoTo miManejadorErr
Open "c:\archivoInexistente.txt" For Input As #1
End
miManejadorErr:
Dim strErr
strErr = strErr & "Description : " & Err.Description & Chr(13)
strErr = strErr & "HelpContext : " & Err.HelpContext & Chr(13)
strErr = strErr & "Number : " & Err.Number & Chr(13)
strErr = strErr & "Source : " & Err.Source & Chr(13)
MsgBox strErr
Resume Next
End Sub
Clear
, limpia un error cuando se establece el valor deErr.Number
con0
, utilice este método cuando se manejen errores inlineRaise
, causa un error, utilice este método para pasar un error de regreso al procedimiento que lo invoco. Si se requiere generar y atrapar errores propios, comience el esquema de numeración con 32767 y trabaje los números de forma descendente:Err.Raise 23000
Un manejador de errores Inline
no contiene etiquetas o sentencias Resume
.
Es posible escribir manejadores de errores Inline en vez de bifurcar al manejador de errores establecido, para ello:
- Incluir en el código la sentencia
On Error Resume Next
- Evaluar el valor
Err.Number
después de cada sentencia que pueda generar un error - Utilizar el método
Err.Clear
restablecer el número de error
Existen 3 procesos generales para interceptar o atrapar un error:
- Break on All Errors, si se establece esta opción Visual Basic ignora cualquier sentencia
On Error
y continua en break mode si ocurre cualquier error en tiempo de ejecución. Esta opción es utilizada para buscar errores mientras se ejecuta la aplicación dentro del ambiente de desarrollo Visual Basic. - Break in Class Module, si se establece esta opción cuando se busca un error en un proyecto ActiveX Component, causa que el componente ActiveX continue en Break mode antes que pasar el error de regreso a la aplicación cliente.
- Break on Unhandled Errors, cuando se establece esta opción, Visual Basic continua en Break mode sobre cualquier error que no tenga un manejador de error especifico.
Para establecer alguno de los procesos anteriores seleccione:
Del menún principal Options » General Tab » seleccionar uno de los procesos Error Trapping
0 comentarios:
Publicar un comentario