Each condition has a condition type object associated with it. These objects are used as a means of focusing on related classes of conditions, first by concentrating all of the information about a specific class of condition in a single place, and second by specifying an inheritance relationship between types. This inheritance relationship forms the taxonomic structure of the condition hierarchy (see Taxonomy).
The following procedures consititute the abstraction for condition types.
Creates and returns a (new) condition type that is a specialization of
generalization (if it is a condition type) or is the root of a new
tree of condition types (if generalization is
debugging purposes, the condition type has a name, and instances
of this type contain storage for the fields specified by
field-names (a list of symbols) in addition to the fields common
to all conditions (type, continuation and restarts).
Reporter is used to produce a description of a particular
condition of this type. It may be a string describing the condition, a
procedure of arity two (the first argument will be a condition of this
type and the second a port) that will
write the message to the
given port, or
#f to specify that the reporter should be taken
from the condition type generalization (or produce an
“undocumented condition of type …” message if generalization
#f). The conventions used to form descriptions are spelled
out in Error Messages.
#t if the condition-type is
condition-type:error or a specialization of it,
Returns a list of all of the field names for a condition of type
condition-type. This is the set union of the fields specified
when this condition-type was created with the
condition-type/field-names of the generalization of this
Returns a list of all of the generalizations of condition-type. Notice that every condition type is considered a generalization of itself.
#f if and only if object is not a condition type.