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.


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

     (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) 
    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


    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.”