% Condition-Type CONDITION
Condition Type CONDITION
全てのコンディションの型は、 エラーか非エラー関わらず、この型を継承しなければなりません。
本文中で明示的に言及されている場合を除き、
指定された型conditionのサブタイプの間で
追加のサブタイプの関係は許可されません。
しかし実装であれば追加の型を導入することが許されており、
これらの型のひとつは、
任意の数の型conditionのサブタイプの
さらなるサブタイプであることができます。
ユーザーで定義したコンディションの型が持つスロットを
with-slotsによってアクセスできるかどうかは
実装依存です。
さらに実装内にあるユーザー定義のコンディション型がスロットを持っているかどうか、
またコンディション型のドキュメントにそのようなスロットが定義されているか、
それらのスロットが名前を持っており実際に扱っているかどうかなどは、
すべて実装依存です。
移植可能なコードが参考にできるのは、
ただ仕様書に記載されているリーダー関数のみです。
仕様に適合したコードはコンディションに関係する 下記の制約に従わなければなりません。
新しいコンディション型を定義するときは
define-conditionを使用しなければならず、
defclassではいけません。
コンディションのオブジェクトを明に作成するときは、
make-conditionを使用しなければならず、
make-instanceではいけません。
コンディションの報告を定義するときは
define-conditionの:reportオプションを使用しなければならず、
print-objectのdefmethodを定義してはいけません。
slot-value, slot-boundp,
slot-makunbound, with-slotsは
コンディションオブジェクトに使用してはいけません。
かわりに(define-conditionによって定義された)
適切なアクセス関数を使用する必要があります。