d
Activa o desactiva el manejo de errores.
Sintaxis
On Error Resume Next
On Error GoTo 0
Observaciones
Si no utiliza una sentencia On Error Resume Next en ninguna parte del código, cualquier error de tiempo de ejecución que se produzca puede provocar que se muestre un mensaje de error y que se detenga la ejecución del código. Sin embargo, el host que ejecuta el código determina el comportamiento exacto. El host a veces puede optar por manejar estos errores de manera diferente. En algunos casos, se puede llamar al depurador de scripts en el punto del error. En otros casos, puede que no haya ninguna indicación aparente de que se haya producido un error porque el host no quiere notificar al usuario. Una vez más, esto es meramente una función de cómo el host maneja los errores que se producen.
En cualquier procedimiento, un error no es necesariamente grave si el manejo de errores está activado en algún lugar de la pila de llamadas. Si el manejo de errores local no está activado en un procedimiento y se produce un error, el control se devuelve a través de la pila de llamadas hasta que se encuentra un procedimiento con el manejo de errores activado y el error se maneja en ese punto. Si no se encuentra ningún procedimiento en la pila de llamadas que tenga activado el manejo de errores, se muestra un mensaje de error en ese punto y la ejecución se detiene o el host maneja el error según corresponda.
On Error Resume Next hace que la ejecución continúe con la sentencia inmediatamente posterior a la sentencia que causó el error de tiempo de ejecución, o con la sentencia inmediatamente posterior a la llamada más reciente del procedimiento que contiene la sentencia On Error Resume Next. Esto permite que la ejecución continúe a pesar de que se produzca un error de tiempo de ejecución. A continuación, puede crear la rutina de manejo de errores en línea en el procedimiento.
Una sentencia On Error Resume Next se vuelve inactiva cuando se llama a otro procedimiento, por lo que debe ejecutar una sentencia On Error Resume Next en cada rutina a la que se llama si desea el manejo de errores en línea en esa rutina. Cuando se cierra un procedimiento, la capacidad de manejo de errores se revierte al tipo de manejo de errores existente antes de iniciar el procedimiento cerrado.
Utilice On Error GoTo 0 para desactivar el manejo de errores si lo ha activado previamente mediante On Error Resume Next.
En el siguiente ejemplo se muestra el uso de la sentencia On Error Resume Next.
On Error Resume Next ' Ignore errors and continue execution
' Attempt to divide by zero (this will cause an error)
Dim result
result = 10 / 0
err1 = Err.Number
' Check if an error occurred
If err1 <> 0 Then
Err.Clear ' Clear the error
End If
' Script continues after error handling.
Explicación:
La línea result = 10 / 0 causará un error de división entre cero.
Dado que On Error Resume Next está activa, el script no se para y comprobamos el error mediante Err.Number.
A continuación, borramos el error mediante Err.Clear después de manejarlo.
Puntos importantes para recordar:
Err.Number: esta propiedad contiene el código de error si se produce un error. Si no se produce ningún error, es 0.
Err.Description: proporciona una descripción del último error que se ha producido.
Err.Clear: borra la información del error una vez que se ha manejado, de modo que los errores posteriores no afecten al script.
Ejemplo 1:
On Error Resume Next ' Ignore errors and continue execution ' Attempt to divide by zero (this will cause an error) Dim result result = 10 / 0 err1 = Err.Number On Error GoTo 0 ' Default error handling is restored ' Now, any error that occurs will stop the script result = 10 / 0 'Error will be thrown