Toolkit II, Manual de Usuario
Anterior Siguiente

17 Manipulación de Errores

Las ROMs JS y MG del QL contienen el código inacabado para la captura de errores en el SuperBASIC: El Toolkit II corrige algunos de los problemas existentes.

El manejo de errores se invoca mediante una cláusula WHEN ERROR. Contrariamente a las definiciones de procedimientos y funciones, estas cláusulas son estáticas. El manejo de errores es activado cuando se encuentra una cláusula WHEN ERROR, pero sólo es accionado cuando (WHEN) se encuentra un ERROR. Ello significa que un programa puede tener más de una cláusula WHEN ERROR. Cada vez que una de ellas es ejecutada, el proceso de errores definido en la cláusula reemplaza al anteriormente definido.

La cláusula se abre con una sentencia WHEN ERROR y se cierra con una END WHEN. Dentro de la cláusula puede haber cualquier tipo de sentencias ( ¡aunque es conveniente evitar la llamada a funciones o procedimientos del SuperBASIC! ). De una cláusula WHEN ERROR se sale mediante los comandos STOP, CONTINUE, RETRY, RUN, LOAD o LRUN (siempre que se esté usando el Toolkit II). Además, las versiones de RUN, NEW, CLEAR, LOAD, LRUN, MERGE y MRUN en el Toolkit II reinicializan el proceso de errores (una desafortunada omisión en las ROMs del QL).

Hay una serie de facilidades adicionales pensadas para su uso en las cláusulas WHEN ERROR.

17.1 Errores

Las siguientes funciones se corresponden con cada uno de los códigos de error del sistema:

ERR_NC, ERR_NJ, ERR_OM, ERR_OR, ERR_BO,

ERR_NO, ERR_NF, ERR_EX, ERR_IU, ERR_EF,

ERR_DF, ERR_BN, ERR_TE, ERR_FF, ERR_BP,

ERR_FE, ERR_XP, ERR_OV, ERR_NI, ERR_RO,

ERR_BL 

y devuelven el valor verdadero si el error que causó la invocación de la cláusula WHEN ERROR es del tipo dado. No usar ERR_DF sin el Toolkit II.

Los siguientes procedimientos dan información sobre el error producido:

ERLIN devuelve el número de línea en el que ocurrió el error
ERNUM devuelve el número de error
REPORT #canal informa del último error
REPORT informa del último error en el canal #0
REPORT #canal,número de error informa del error cuyo número es el especificado

17.2 RETRY y CONTINUE

Ya que RETRY y CONTINUE permiten salir de una cláusula de error sin reinicializar el WHEN ERROR, sería útil que pudieran ser también usados para salir a una parte distinta del programa. En el Toolkit II, RETRY y CONTINUE pueden tener un número de línea.

CONTINUE número de línea continuar desde la línea dada
RETRY número de línea "retry" desde la línea dada

100 WHEN ERRor
110 IF ERLIN=200: PRINT #0\'¡ojo!',:RETRY
120 REPORT
130 STOP
140 END WHEN
150 :
160 do_in x
170 STOP
180 DEF PROCedure do_in(j)
190 FOR i=1 TO 10
200 INPUT #0,'entrada';j
210 PRINT #0,'valor';j
220 END FOR i
230 END DEFine do_in


Anterior Índice de Materias Siguiente
Parámetros de procedimientos   Mantenimiento del tiempo