invoke-restart (original) (raw)

ANSI Common Lisp 9 Conditions 9.2 Dictionary of Conditions

9.2.34 invoke-restart Function

Syntax:

invoke-restart restart &rest arguments {result}*

Arguments and Values:

restart - a restart designator.

argument - an object.

results - the values returned by the function associated with restart, if that function returns.

Description:

Calls the function associated with restart, passing arguments to it. Restart must be valid in the current dynamic environment.

Examples:

(defun add3 (x) (check-type x number) (+ x 3))

(foo 'seven) Error: The value SEVEN was not of type NUMBER. To continue, type :CONTINUE followed by an option number: 1: Specify a different value to use. 2: Return to Lisp Toplevel. Debug> (invoke-restart 'store-value 7) 10

Side Effects:

A non-local transfer of control might be done by the restart.

Affected By:

Existing restarts.

Exceptional Situations:

If restart is not valid, an error of type control-error is signaled.

See Also:

find-restart,restart-bind,restart-case,invoke-restart-interactively

Notes:

The most common use for invoke-restart is in a handler. It might be used explicitly, or implicitly through invoke-restart-interactivelyor a restart function.

Restart functions call invoke-restart, not vice versa. That is,invoke-restart provides primitive functionality, and _restart functions_are non-essential "syntactic sugar."

Allegro CL Implementation Details:

None.