diff options
Diffstat (limited to 'sys/etc/doc/error.hlp')
-rw-r--r-- | sys/etc/doc/error.hlp | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/sys/etc/doc/error.hlp b/sys/etc/doc/error.hlp new file mode 100644 index 00000000..7776093f --- /dev/null +++ b/sys/etc/doc/error.hlp @@ -0,0 +1,51 @@ + +.help error, fatal, errchk, erract, iferr 2 "Error Handling Strategy" +.sh +ERROR HANDLING + + A recoverable error condition is asserted with ERROR. An irrecoverable +error condition is asserted with FATAL. Error recovery is implemented +using the IFERR and IFNOERR statements in the preprocessor language. +ERRACT may be called in an IFERR statement to cause a warning to be issued, +or to cause a particular error action to be taken. ERRCODE returns either +OK or the integer code of the posted error. + +Language support includes the IFERR and IFNOERR statements and the ERRCHK +declaration. The IFERR statement is grammatically equivalent to the IF +statement. Note that the condition to be tested in an IFERR statement may +be a procedure call or assignment statement, while the IF statement tests +a boolean expression. + + +.nf + errchk proc1, proc2, ... # errchk declaration + + iferr (procedure call or assignment statement) + <error_action_statement> + + iferr { + <any statements, including IFERR> + } then + <error_action_statement> + + +Library procedures (ERROR and FATAL cause a RETURN): + + error (errcode, error_message) + fatal (errcode, error_message) + erract (severity) + val = errcode () + + +ERRACT severity codes (<error.h>): + + EA_WARN # issue a warning message + EA_ERROR # assert recoverable error + EA_FATAL # assert fatal error +.fi + + +An arithmetic exception (X_ARITH) will be trapped by an IFERR statement, +provided the posted handler(s) return without causing error restart. +X_INT and X_ACV may only be caught by posting an exception handler with +XWHEN. |