On Tue, Jan 25, 2011 at 10:37 PM, Matthew Mondor <email@example.com>
I can indeed see the error type symbol in the cl_[c]error() calls, that
clears up things a lot, thanks! The remaining unclear part to me is
FEerror() which seems to invoke universal_error_handler() and from
there I get lost as to how the condition object is created.
universal-error-handler is the function which is reponsible for creating and signaling conditions. It is defined in src/clos/conditions.lsp with the following signature
(defun sys::universal-error-handler (continue-string datum args)
As you see, it is basically a CERROR on steroids. The CONTINUE-STRING argument allows for three ways of signalling error:
* T for CERROR with the usual restart IGNORE
* NIL for ERROR with no restarts and an opened debugger
* A string for a CERROR with a CONTINUE restart. The string is the message.
* A symbol for a named restart around a CERROR.