[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

SCL condition system



    Date: Wed, 27 Jun 90 19:05 PDT
    From: Charest@AI-SUN.jpl.nasa.gov (Len Charest)

    I have just started playing with the condition system in release 7.2 Genera.
    How are handlers established for the following call to ERROR?
	
	    (error 'ferror :format-string "moo cow")

When you write "how are handlers established", are you asking how the
built-in handling of this is implemented or how you would establish a
handler?  The latter is done using CONDITION-CASE or CONDITION-BIND to
specify a handler forn the FERROR condition flavor (or one of its
component flavors: ERROR, DBG:DEBUGGER-CONDITION, or CONDITION); this is
explained in detail in book 2A of the 7.2 manual set (book 8 of the 8.0
manuals).

    I understand that a condition object of flavor FERROR is instantiated and then
    the SIGNAL-CONDITION method is run, and ultimately the debugger is entered.
    Furhtermore, by tracing the inner workings of signal-condition I discovered that a
    handler named DEBUGGER-HANDLER is somehow established on the list of *bound-handlers*.
    So who set-up this handler? And who sets up any handlers for any call to error that
    is not lexically surrounded by forms such as condition-case, etc.???
	   ^^^^^^^^^
	   You mean "dynamically".

DEBUGGER-HANDLER isn't on *BOUND-HANDLERS*, it's on
*INTERACTIVE-HANDLERS*, which is searched if no handler is found on
*BOUND-HANDLERS*, *GLOBAL-HANDLERS*, or *DEFAULT-HANDLERS*.  It's
initialized at boot time because it's defined with DEFVAR-RESETTABLE.

    Maybe this is moot in light of the new Common Lisp Condition System...

Well, since Genera doesn't implement the Common Lisp Condition System
yet (it's not in 8.0, and I haven't heard whether it will be in 8.1),
it's not yet moot.

                                                barmar