An exception–handler function typically handles just a few exceptional–condition classes; every exception–handler must return using one among:
return_success_after_handling_exception return_failure_after_handling_exception return_after_not_handling_exception
The basic template of an exception–handler is as follows:
function my_exception_handler () { mbfl_mandatory_nameref_parameter(CND, 1, exceptional-condition object) if spiffy_condition_p _(CND) then do_some_thing _(CND) if handled_successfully then return_success_after_handling_exception else return_failure_after_handling_exception fi else return_after_not_handling_exception fi }
most exceptional–condition objects are non–continuable: it is not possible to resume script’s
execution after handling them; so we should just use return_failure_after_handling_exception
.
Push HANDLER on the stack of exceptional–condition handlers. Register a location handler that pops HANDLER from the stack upon leaving the current location, Locations programming interface.
The parameter HANDLER should be an applicable identifier bound to a function, alias or command; it must accept a single mandatory parameter:
HANDLER CONDITION_OBJECT
The default exception–handler; it is pushed on the global exception–handlers stack upon loading MBFL’s core library. We can think of it as having the following implementation:
mbfl_mandatory_nameref_parameter(mbfl_CND, 1, exceptional-condition object) if mbfl_warning_condition_p _(mbfl_CND) && mbfl_exceptional_condition_is_continuable _(mbfl_CND) then mbfl_exceptional_condition_print _(mbfl_CND) >&2 return_success_after_handling_exception elif mbfl_uncaught_exceptional_condition_p _(mbfl_CND) then mbfl_exceptional_condition_print _(mbfl_CND) >&2 exit_because_uncaught_exception else mbfl_default_object_declare(mbfl_ENVELOPE_CND) mbfl_uncaught_exceptional_condition_make _(mbfl_ENVELOPE_CND) $FUNCNAME _(mbfl_CND) mbfl_exception_raise _(mbfl_ENVELOPE_CND) fi
Notice that if the default handler raises an “uncaught exceptional–condition”: the topmost exception–handler from the stack is applied to it; the exception–handlers we install have a chance to handle the uncaught exceptional–condition. Uncaught exceptional-condition objects.
Return from an exception handler with a return status signalling to mbfl_exception_raise()
that
the exceptional–condition has been handled and that the script can resume execution.
Return from an exception handler with a return status signalling to mbfl_exception_raise()
that
the exceptional–condition has been handled but the script cannot resume execution.
Return from an exception handler with a return status signalling to mbfl_exception_raise()
that
the exceptional–condition has not been handled.
Exit with code 87
by calling mbfl_exit()
.
Exit with code 86
by calling mbfl_exit()
.
This document describes version 3.0.0-devel.9 of Marcos Bash Functions Library.