Etiquetas

Entradas

Contribuye

viernes, 25 de junio de 2010

Control de errores para aplicaciones robustas

Cuando se trabaja en el control de errores de Access, éstas son las instrucciones que se pueden utilizar:

On Error
Resume
Exit

On Error:
permite especificar dónde se quiere exactamente que Access actúe cuando suceda un error.
La instrucción On Error tiene variables utilizadas para direccionar.

On Error Goto: tiene dos opciones :

Numero Línea, que puede ser un número situado en el procedimiento
Etiqueta Línea, que es una etiqueta que especifica el inicio de una sección de un procedimiento.
El código siguiente crea un controlador de errores muy simple.
Sub SimpleError(intNumerator As Integer, intDenominator As Integer)
On Error GoTo SimpleError_Error
Debug.Print intNumerator / intDenominator
SimpleError_Error:
MsgBox Err.Description, vbCritical, "Ha ocurrido un error"
Exit Sub
End Sub

Este procedimiento muestra un mensaje de error “Ha ocurrido un error” y sale del mismo. Es mejor que el presentado en la figura anterior. Después de recibir el usuario este mensaje, la ejecución del programa sale directamente debido al error producido.

La instrucción On Error Resume Next:

Se utiliza cuando el programa necesita continuar en la línea que sigue inmediatamente a la que originó el error. Un ejemplo sucede cuando se intenta eliminar una tabla que ya ha sido eliminada. El código para éste ejemplo es el siguiente:
Sub InlineResumeNextExample() 'Esta instrucción dice a Access que ignore los errores y '—salte a la siguiente línea.
On Error Resume Next
DoCmd.DeleteObject acTable, "UnaTabla"
End Sub

El siguiente código utiliza la instrucción Exit Sub para salir del procedimiento después de mostrar el error.
Sub SimpleError(intNumerator As Integer, intDenominator As Integer)
On Error GoTo SimpleError_Error
Debug.Print intNumerator / intDenominator
SimpleError_Error:
MsgBox Err.Description, vbCritical, "Ha ocurrido un error"
Exit Sub
End Sub

Las instrucciones Resume, Resume Next y Resume Etiqueta línea se utilizan dentro del controlador de errores para continuar con el procedimiento después de tratar el error.

La instrucción Resume devuelve la ejecución del procedimiento a la línea en la que ocurrió el error.

Sub ResumeExample(intNumerator As Integer, intDenominator As Integer)
On Error GoTo Error_ResumeExample
DoCmd.CopyDatabaseFile "C:\Mis BD\MiBD.mdb", True
Exit Sub
Error_ResumeExample:
Msgbox “ Compruebe que hay disco en la disquetera e intente de nuevo.“
Resume
End Sub

La instrucción Resume Next proporciona la capacidad de dar un mensaje, tratar el error y desplazarse a la siguiente línea de código posterior a la que originó el error.
Sub ResumeNextExample()
On Error GoTo Error_ResumeNextExample
DoCmd.DeleteObject acTable, "CualquierTabla"
Exit Sub Error_ResumeNextExample:
MsgBox Err.Description, vbCritical, "Error al intentar eliminar la tabla"
Resume Next
End Sub
La instrucción Resume Etiqueta línea permite continuar en la etiqueta de línea especificada. Esta instrucción se utiliza habitualmente para crear una salida del procedimiento.
Sub ResumeLineLabelExample()
On Error GoTo Error_ResumeLineLabelExample
DoCmd.DeleteObject acTable, "NoTable" '—Esta etiqueta inicia la salida del procedimiento Exit_ResumeLineLabelExample:
Exit Sub '—Esta etiqueta es para tartar el error
Error_ResumeLineLabelExample:
MsgBox Err.Description, vbCritical, "Error al eliminar la tabla" Resume Exit_ResumeLineLabelExample
End Sub

No hay comentarios: