Error Handlers
An error handler is a block of code containing statements to be executed
if DECTPU generates a warning or an error. Error handlers are optional
and may be used either in procedures or in programs. When used in
programs (outside procedures) they must be placed after all the global
declarations of constants, variables and procedures, and before any
executable statements. Only one error handler can be used in each
procedure, and only one one can be used per program (outside procedures).
DECTPU error handlers are not usually recursive; that is, they do not
apply their own statements to errors that arise while the error handler
itself is being executed. However, CTRL/C routines are an exception; they
ARE recursive.
Types of Error Handlers in DECTPU
DECTPU has two types of error handlers: procedure-style and case-style.
The following example shows the syntax of a procedure-style error handler:
ON_ERROR
MESSAGE (ERROR_TEXT);
MESSAGE ("Error on line " + STR (ERROR_LINE));
RETURN;
ENDON_ERROR
The following example shows the syntax of a case-style error handler:
ON_ERROR
[TPU$_CONTROLC]:
MESSAGE (ERROR_TEXT);
RETURN (LEARN_ABORT);
[OTHERWISE]:
MESSAGE( ERROR_TEXT);
RETURN;
ENDON_ERROR
Case-style error handlers are similar to DECTPU case statements. The
statements in the handler have the general format:
[error-keyword1,...error-keywordn] : statement1;...statementn;
The the selectors on the left-hand side of the colon in each statement
must be either of the following:
o DECTPU keywords indentifying errors or warnings
o The keyword OTHERWISE
Case-style error handlers allow you to do the following:
o Trap the TPU$_CONTROLC status
o Specify an [OTHERWISE] selector specifying how to handle all errors and
warnings that are not covered by specific selectors in the error
handler.
o Suppress display of error and warning messages
For more information on using error handlers, please refer to the DEC Text
Processing Utility Manual.
Related Topics
CALL_USER ERROR ERROR_LINE ERROR_TEXT LEARN_ABORT
MESSAGE MESSAGE_FLAGS MESSAGE_TEXT RETURN