Chapter 29
Conditions

 29.1 Introduction
 29.2 Changes in Terminology
 29.3 Survey of Concepts
  29.3.1 Signaling Errors
  29.3.2 Trapping Errors
  29.3.3 Handling Conditions
  29.3.4 Object-Oriented Basis of Condition Handling
  29.3.5 Restarts
  29.3.6 Anonymous Restarts
  29.3.7 Named Restarts
  29.3.8 Restart Functions
  29.3.9 Comparison of Restarts and Catch/Throw
  29.3.10 Generalized Restarts
  29.3.11 Interactive Condition Handling
  29.3.12 Serious Conditions
  29.3.13 Non-Serious Conditions
  29.3.14 Condition Types
  29.3.15 Signaling Conditions
  29.3.16 Resignaling Conditions
  29.3.17 Condition Handlers
  29.3.18 Printing Conditions
 29.4 Program Interface to the Condition System
  29.4.1 Signaling Conditions
  29.4.2 Assertions
  29.4.3 Exhaustive Case Analysis
  29.4.4 Handling Conditions
  29.4.5 Defining Conditions
  29.4.6 Creating Conditions
  29.4.7 Establishing Restarts
  29.4.8 Finding and Manipulating Restarts
  29.4.9 Warnings
  29.4.10 Restart Functions
  29.4.11 Debugging Utilities
 29.5 Predefined Condition Types

Author: Kent M. Pitman

This chapter presents the bulk of the Common Lisp Condition System proposal, written by Kent M. Pitman and amended by X3J13. I have edited it only very lightly to conform to the overall style of this book and have inserted a small number of bracketed remarks identified by the initials GLS. Please see the Acknowledgments to this second edition for the author’s acknowledgments to others who contributed to the Condition System proposal.

—Guy L. Steele Jr.