LANZA

Sinopsis
LANZA etiqueta
(LANZA etiqueta valor)
(LANZA "ERROR texto_de_error)
(LANZA "ERROR 4 mal_valor)
THROW etiqueta
(THROW etiqueta valor)
(THROW "ERROR texto_de_error)
(THROW "ERROR 4 mal_valor)
Descripción

Termina la ejecución de la lista de instrucciones de ATRAPA. LANZA se debe usar dentro del ámbito de una instrucción de ATRAPA que tiene el mismo etiqueta que el argumento etiqueta de LANZA. Si se ejecuta LANZA con un argumento valor, entonces ATRAPA devuelve valor. Si no se ejecuta LANZA con un argumento valor, entonces ATRAPA no devuelve nada.

El argumento etiqueta debe ser una palabra.

LANZA "SYSTEM termina la sesión de FMSLogo inmediatamente.

LANZA "TOPLEVEL termina la ejecución de todos los procedimientos y todas las pausas interactivas y devuelve el control al alto nivel interactivo. Este tiene el mismo efecto que presionar el Botón Alto.

Se puede usar LANZA "ERROR para generar una condición de error. Si no se atrapa el error, escribe un mensaje (ATRAPA "Error) con la indicación usual de donde ocurrió el error que, en este caso, sería la instrucción de LANZA. Si etiqueta es igual a "ERROR y das un argumento texto_de_error, entonces se usa texto_de_error como el texto del mensaje de error en lugar del texto estándar. En este caso, el lugar que indica el error no es el lugar de la instrucción de LANZA, sino el lugar donde se ejecuta el procedimiento que contiene esta instrucción de LANZA. Este habilita que los procedimientos definidos por usuarios puedan generar mensajes de error como si fueran primitivas. Si etiqueta es igual a "ERROR y el segundo argumento es 4 (el código por error de mala entrada) y existe un tercer argumento, entonces se lanza un error de «mala entrada» y se usa el tercer argumento como el valor de la mala entrada.

Nota que cuando usas LANZA "ERROR, el ATRAPA "ERROR correspondiente, si existe, no devuelve un valor porque se trata el segundo argumento de LANZA como un mensaje a mostrar, no un valor a devolver.

Ejemplo

El ejemplo siguiente demuestra cómo usar LANZA como una estructura de control:

PARA MIPROGRAMA2
  ESCRIBE [Antes de lanzar]
  LANZA "etiqueta1
  ESCRIBE [Nunca llega aquí porque LANZA retrocede]
FIN

PARA MIPROGRAMA1
  ATRAPA "etiqueta1 [MIPROGRAMA2]
  ESCRIBE [Estoy de vuelta]
FIN

MIPROGRAMA1
Antes de lanzar
Estoy de vuelta

El ejemplo siguiente demuestra cómo probar por malas entradas:

PARA COORDENADAS :x :y
  SI NO NUMERO? :x [ (LANZA "ERROR 4 :x) ]
  SI NO NUMERO? :y [ (LANZA "ERROR 4 :y) ]
  DEVUELVE (PALABRA "|(| :x "|, | :y "|)| )
FIN

MUESTRA COORDENADAS 1 2
(1, 2)

MUESTRA COORDENADAS [1] [2]
a COORDENADAS no le gustó recibir [1]


SourceForge.net Logo