Common Lisp the Language, 2nd Edition
Next: Resignaling Conditions
Up: Survey of Concepts
Previous: Condition
Types
When a condition is signaled, the system tries to locate the most
appropriate handler for the condition and to invoke that handler.
Handlers are established dynamically using handler-bind
or abstractions built on handler-bind
.
If an appropriate handler is found, it is called. In some circumstances, the handler may decline simply by returning without performing a non-local transfer of control. In such cases, the search for an appropriate handler is picked up where it left off, as if the called handler had never been present.
If no handler is found, or if all handlers that were found decline,
signal
returns nil
.
Although it follows from the description above, it is perhaps worth
noting explicitly that the lookup procedure described here will prefer a
general but more (dynamically) local handler over a specific but less
(dynamically) local handler. Experience with existing condition systems
suggests that this is a reasonable approach and works adequately in most
situations. Some care should be taken when binding handlers for very
general kinds of conditions, such as is done in
ignore-errors
. Often, binding for a more specific condition
type than error
is more appropriate.
AI.Repository@cs.cmu.edu