The Common Lisp condition system


Michał “phoe” Herda. The Common Lisp Condition System. Apress. 2020.

An enormously detailed look at the condition system, sometimes regarded as the Lisp equivalent of exception-handling in other languages.

But that’s massively unfair to the condition system, which is really a way to deal with non-local transfers of control in the most flexible way possible. Exceptions are just one type of this, and the condition system aims to separate three aspects that are often combined in other languages: detecting and signalling a condition, responding to a condition, and deciding on the binding between the two, possibly combining responses differently in different contexts. It’s a set of concepts that are in many ways foreign to a lot of other languages, and so justify the detail for those occasions when these techniques are appropriate: deciding when they are appropriate is non-trivial, a matter of both functionality and style.

(Part of the series An annotated Lisp bibliography.)