Name

pfe-exception-ext ? Exception + extensions

Synopsis

CATCH ( catch-xt* -- 0 | throw#! ) ?=>? ();?
"[ANS] FORTH";
?
THROW ( throw#! -- [THROW] | throw# -- ) ?=>? ();?
"[ANS] FORTH";
?
ABORT ( -- [THROW] ) ?=>? ();?
"[ANS] FORTH";
?
ABORT" ( [string<">] -- [THROW] ) ?=>? ();?
"[ANS] FORTH";
?

Description

CATCH ( catch-xt* -- 0 | throw#! ) [ANS] => "[ANS] FORTH"

execute the given execution-token and catch any exception that can be caught therein. software can arbitrarily raise an exception using THROW - the value 0 means there was no exception, other denote implementation dependent exception-codes.

THROW ( throw#! -- [THROW] | throw# -- ) [ANS] => "[ANS] FORTH"

raise an exception - it will adjust the depth of all stacks and start interpreting at the point of the latest CATCH if n is null nothing happens, the -1 (ie. FALSE ) is the raise-code of ABORT - the other codes are implementation dependent and will result in something quite like ABORT

ABORT ( -- [THROW] ) [ANS] => "[ANS] FORTH"

throw - cleanup some things and go back to the QUIT routine

  : ABORT -1 THROW ;
  

ABORT" ( [string<">] -- [THROW] ) [ANS] => "[ANS] FORTH"

throw like ABORT but print an additional error-message to stdout telling what has happened.