[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