#### 9.1.1 Condition Types ¶

Figure 9–1 lists the standardized condition types. Additional condition types can be defined by using define-condition.

     arithmetic-error                 floating-point-overflow  simple-type-error
     cell-error                       floating-point-underflow simple-warning
     condition                        package-error            storage-condition
     control-error                    parse-error              stream-error
     division-by-zero                 print-not-readable       style-warning
     end-of-file                      program-error            type-error
     error                            reader-error             unbound-slot
     file-error                       serious-condition        unbound-variable
     floating-point-inexact           simple-condition         undefined-function
     floating-point-invalid-operation simple-error             warning

                        Figure 9–1: Standardized Condition Types

All condition types are subtypes of type condition. That is,

     (typep c 'condition) ⇒  true

if and only if c is a condition.

Implementations must define all specified subtype relationships. Except where noted, all subtype relationships indicated in this document are not mutually exclusive. A condition inherits the structure of its supertypes.

The metaclass of the class condition is not specified. Names of condition types may be used to specify supertype relationships in define-condition, but the consequences are not specified if an attempt is made to use a condition type as a superclass in a defclass form.

Figure 9–2 shows operators that define condition types and creating conditions.

      define-condition  make-condition

      Figure 9–2: Operators that define and create conditions.

Figure 9–3 shows operators that read the value of condition slots.

      arithmetic-error-operands   simple-condition-format-arguments
      arithmetic-error-operation  simple-condition-format-control
      cell-error-name             stream-error-stream
      file-error-pathname         type-error-datum
      package-error-package       type-error-expected-type
      print-not-readable-object   unbound-slot-instance

             Figure 9–3: Operators that read condition slots.