Our review of obscure Lisp features for newcomers arriving from C++ now comes to signal. Some time ago I wrote a series of articles about exception handling in Lisp from a C++ perspective, you might want to review that series here.
As discussed in the earlier series, signal behaves somewhat like a C++ throw, but with some important differences. Foremost among them is that if there is no handler for the signaled condition, the signal form returns nil and execution continues at the next statement. This is unlike C++, where an unhandled exception causes an immediate ABEND.