One of Lisp's great features is its condition system. It serves a similar purpose to the exception handling systems in Java, Python, and C++ but is more flexible. In fact, its flexibility extends beyond error handling conditions are more general than exceptions in that a condition can represent any occurrence during a program's execution that may be of interest to code at different levels on the call stack. (1)
The macro HANDLER-CASE establishes this kind of condition handler.
The basic form of a HANDLER-CASE is as follows:
where each error-clause is of the following form:
(condition-type ([var]) code)
Condition Handler in action
#lisp #handler-case #conditions