#### 9.2.34 invoke-restart [Function] ¶

`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 [Function] , restart-bind [Macro] , restart-case [Macro] , invoke-restart-interactively [Function]

#### Notes:: ¶

The most common use for invoke-restart is in a handler. It might be used explicitly, or implicitly through invoke-restart-interactively or 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.”