PC Logo Wiki
Advertisement

Syntax

CATCH word instructionlist

Explanation

CATCH runs the intructions in its second input. If Logo encounters a THROW statement with the same word argument, control returns to CATCH.

There are two special uses of CATCH. If the first input to CATCH is TRUE, any THROW statement will be caught. Also, CATCH "ERROR catches an error that would otherwise print a Logo message and return to toplevel. In this case, the built-in variable ERROR contains a hint about which error occured.

Examples

The following example asks you to type a name. If you type a number instead, the program prints a message and continues.

TO NAMIT

CATCH "NOTNAME [NAMIT1 STOP]
NAMIT

END

TO NAMIT1

PRINT [PLEASE TYPE A NAME]
MAKE "NAME READ
IF NUMBER? :NAME \
[PRINT [THAT'S A NUMBER, NOT A NAME] THROW "NOTNAME]
PRINT (SE :NAME [IS A GOOD NAME])

END

? NAMIT

PLEASE TYPE A NAME

? KURT

KURT IS A GOOD NAME

PLEASE TYPE A NAME

? 5

THAT'S A NUMBER NOT A NAME

?

Type Control-G to return to toplevel.

In the following example, AVOID.INTERRUPTIONS runs the commands you type. If an error occurs, Logo prints

THAT'S NOT A LOGO COMMAND

and continues executing the procedure instead of printing the usual Logo message and terminating the procedure by returning to toplevel.

TO AVOID.INTERRUPTIONS

CATCH "ERROR [AVOID.INTERRUPTIONS1]
PRINT [THAT'S NOT A LOGO COMMAND]
AVOID.INTERRUPTIONS

END

TO AVOID.INTERRUPTIONS1

RUN READLIST
AVOID.INTERRUPTIONS1

END

? AVOID.INTERRUPTIONS

? PRINT [THIS IS RIGHT]

THIS IS RIGHT

? PRINT THIS IS RIGHT

THAT'S NOT A LOGO COMMAND

?

Type TOPLEVEL or Control-G to return to toplevel.

Advertisement