Variable
dbg
t
catch is used. They are set up so that throws to the matching tag can be received. By default the debugger displays these frames, but if*print-catch-frames* is set tonil then the catch frames are no longer shown.
USER 17 > (setq dbg:*print-catch-frames* nil)
NIL
USER 18 > (defun catch-it ()
(catch 'tag (throw-it) (print "Not caught")))
CATCH-IT
USER 19 > (defun throw-it ()
(throw 'tag (break)))
THROW-IT
USER 20 > (catch-it)
break
1 (continue) return from break.
2 (abort) return to top loop level 0.
Type :c followed by a number to proceed
USER 21 : 1 > :b 5
Interpreted call to (DEFUN THROW-IT):
Call to *%APPLY-INTERPRETED-FUNCTION :
Interpreted call to (DEFUN CATCH-IT):
Call to *%APPLY-INTERPRETED-FUNCTION :
Call to %EVAL :
*print-catch-frames* is an extension to Common Lisp.