Common Lisp the Language, 2nd Edition

Next: Serious Conditions Up: Survey of Concepts Previous: Generalized Restarts

## 29.3.11. Interactive Condition Handling

When a program does not know how to continue, and no active handler is able to advise it, the ``interactive condition handler,'' or ``debugger,'' can be entered. This happens implicitly through the use of functions such as `error` and `cerror`, or explicitly through the use of the function `invoke-debugger`.

The interactive condition handler never returns directly; it returns only through structured non-local transfer of control to specially defined restart points that can be set up either by the system or by user code. The mechanisms that support the establishment of such structured restart points for portable code are outlined in sections 29.3.5 through 29.3.10.

Actually, implementations may also provide extended debugging facilities that allow return from arbitrary stack frames. Although such commands are frequently useful in practice, their effects are implementation-dependent because they violate the Common Lisp program abstraction. The effect of using such commands is undefined with respect to Common Lisp.