ERRORBLOCK( )
Establece un bloque de código para que se ejecute cuando surja un error de tiempo de ejecución
Sintaxis
ERRORBLOCK([]) –> bManejadorErrorActual
Argumentos
es el bloque de código que debe ejecutarse siempre que se produzca un error de tiempo de ejecución. Cuando se evalúa, el sistema pasa un objeto de error a como argumento.
Devuelve
ERRORBLOCK() devuelve el bloque de código de manejo de errores. Si no se ha fijado ningún bloque de manejo de errores desde que se llamó al programa, ERRORBLOCK() devuelve el bloque de manejo de errores por defecto.
Descripción
ERRORBLOCK() es una función de error que define la ejecución de un manejador de errores siempre que se produzca un error. Especifique el manejador de errores como un bloque de código con la forma siguiente:
{ ,… }
donde es un objeto error que contiene información sobre el error. Dentro del bloque de código, pueden enviarse mensajes al objeto con el fin de obtener información sobre el error. Si el bloque de manejo de errores devuelve verdadero (.T.) se reintenta la operación fallida y si devuelve falso (.F.) se reanuda el proceso.
El bloque de código de manejo de errores puede especificarse como una lista de expresiones o como una llamada a una función definida por el usuario. La segunda opción es más útil puesto que pueden utilizarse las sentencias de control de DPXBASE en lugar de expresiones. Este es especialmente el caso si existe BEGIN SEQUENCE pendiente y desea efectuar BREAK a la sentencia RECOVER más próxima.
Como esto implica, los bloques de manejo de errores pueden utilizarse en combinación con estructuras de control BEGIN SEQUENCE…END. En un bloque puede manejar errores de dispositivo, de bajo nivel y comunes que cuentan con un mecanismo de recuperación general. Si la operación requiere un manejo específico de errores, defina BEGIN SEQUENCE y después, BREAK a la sentencia RECOVER, devolviendo el objeto de error para el procesamiento local. Consulte el ejemplo que se muestra más adelante.
Si no se ha especificado utilizando ERRORBLOCK() y se ha producido un error de tiempo de ejecución, se evalúa el bloque de manejo de errores por defecto. Este manejador de errores muestra un mensaje descriptivo en la pantalla, establece ERRORLEVEL() en 1 y después sale mediante QUIT del programa.
Puesto que ERRORBLOCK() devuelve el bloque de manejo de errores actual, es posible especificar un bloque de manejo de errores para una operación guardando el bloque actual y restableciéndolo después de que se haya completado la operación. Del mismo modo, los gestores de errores especificados como bloques de códigos, pueden pasarse a los procedimientos y funciones definidas por el usuario y devolverse mediante RETURN como valores.
Para obtener más información sobre la estructura y operaciones de objetos de error, consulte la entrada Clase de Error dentro de este capítulo y el capítulo Estrategias de Manejo de Errores en la guía Programación y Utilidades.
Ejemplos
¦ El fragmento de código de la página siguiente establece un bloque de manejo de errores, que se llamará cuando se produzca un error dentro de una construcción BEGIN SEQUENCE:
LOCAL bManejadorError, bUltimoManejador, objErr
bManejadorError := { objError ;
MiManejadorError(objError) }
//
// Guardar el manejador actual
bUltimoManejador := ERRORBLOCK(bManejadorError)
//
BEGIN SEQUENCE
.
.
.
// Recibir el objeto de error desde BREAK
RECOVER USING objError
.
.
.
END
ERRORBLOCK(bUltimoManejador) // Restaurar el
// manejador
RETURN
FUNCTION MiManejadorError( objError )
//
BREAK objError // Devolver el objeto de
// error a RECOVER
RETURN NIL
Ficheros: La biblioteca asociada es DPXBASE.CH.