CATCHtaginstructionlist
Command or operation that runs its instructionlist input and outputs whatever instructionlist outputs.
If instructionlist runs a THROW instruction with a tag equal to the tag input (case-insensitive comparison), then the running of instructionlist is immediately terminated.
In this case, CATCH outputs if a value input is given to THROW.
The tag input must be a word.
If tag is the word ERROR, then any error condition that arises during the running of instructionlist has the effect of THROW "ERROR instead of printing an error message and returning to toplevel.
In this case, CATCH does not output a value.
Also, during the running of instructionlist, the variable ERRACT is temporarily unbound.
(If there is an error while ERRACT has a value, that value is taken as an instruction list to be run after printing the error message.
Typically the value of ERRACT, if any, is the list [PAUSE].)
TO MYPROGRAM2
PRINT [Before throw]
THROW "tag1
PRINT [We never get here because we THROW back]
END
TO MYPROGRAM1
CATCH "tag1 [MYPROGRAM2]
PRINT [I'm back]
END
MYPROGRAM1
Before throw
I'm back