Common Lisp the Language, 2nd Edition

Next: Debugging Utilities Up: Program Interface to Previous: Warnings

## 29.4.10. Restart Functions

Common Lisp has the following restart functions built in.

[Function]
`abort &optional condition`

This function transfers control to the restart named `abort`. If no such restart exists, `abort` signals an error of type `control-error`.

If condition is `nil` or not supplied, all outstanding restarts are considered. If condition is not `nil`, only restarts associated with that condition are considered.

The purpose of the `abort` restart is generally to allow control to return to the innermost ``command level.''

[Function]
`continue &optional condition`

This function transfers control to the restart named `continue`. If no such restart exists, `continue` returns `nil`.

If condition is `nil` or not supplied, all outstanding restarts are considered. If condition is not `nil`, only restarts associated with that condition are considered.

The `continue` restart is generally part of simple protocols where there is a single ``obvious'' way to continue, as with `break` and `cerror`. Some user-defined protocols may also wish to incorporate it for similar reasons. In general, however, it is more reliable to design a special-purpose restart with a name that better suits the particular application.

[Function]
`muffle-warning &optional condition`

This function transfers control to the restart named `muffle-warning`. If no such restart exists, `muffle-warning` signals an error of type `control-error`.

If condition is `nil` or not supplied, all outstanding restarts are considered. If condition is not `nil`, only restarts associated with that condition are considered.

`warn` sets up this restart so that handlers of `warning` conditions have a way to tell `warn` that a `warning` has already been dealt with and that no further action is warranted.

[Function]
`store-value value &optional condition`

This function transfers control (and one value) to the restart named `store-value`. If no such restart exists, `store-value` returns `nil`.

If condition is `nil` or not supplied, all outstanding restarts are considered. If condition is not `nil`, only restarts associated with that condition are considered.

The `store-value` restart is generally used by handlers trying to recover from errors of types such as `cell-error` or `type-error`, where the handler may wish to supply a replacement datum to be stored permanently.

[Function]
`use-value value &optional condition`

This function transfers control (and one value) to the restart named `use-value`. If no such restart exists, `use-value` returns `nil`.

If condition is `nil` or not supplied, all outstanding restarts are considered. If condition is not `nil`, only restarts associated with that condition are considered.

The `use-value` restart is generally used by handlers trying to recover from errors of types such as `cell-error`, where the handler may wish to supply a replacement datum for one-time use.

Next: Debugging Utilities Up: Program Interface to Previous: Warnings