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 Condition-Type 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.