I’m going to talk a bit now about catch and throw. These aren’t really obscure, particularly to somebody coming from a C++ background, who probably goes looking for these keywords when wanting to find out about throwing exceptions. I talked at length about exceptions in Lisp earlier, and skipped over these, as they’re not really interesting or novel, but they deserve a mention.
So, catch and throw. Similar in concept to the operations in C++, but rather than the catch specializing on objects, catch specifies a label, and throw jumps to the named label. Consequently, you don’t have cascading catch directives, as you might have in C++. If there is no matching catch for the throw, an error is signaled.