error
(error datum args...)
エラーを通知し、外側の handler-case に捕捉されなければ実行を中止します。Common Lisp のコンディション designator をサポートします:
(error "control" args...)— 制御文字列はformatと同じディレクティブ(~a、~s、~%など)を使うリテラルでなければならず、残りの引数を埋めてメッセージを構築します。(error 'type :initarg value ...)— 指定したクラス(組み込み、またはdefine-conditionで定義)のコンディションインスタンスを構築して通知します。メッセージはクラスに:reportが定義されていればその描画結果、なければCondition (type initargs...) was signalled.形です。simple-*クラスでは指定された:format-controlがメッセージになります。(error obj)— 構築済みのコンディションオブジェクト(例:make-conditionの結果)を通知します。実行時に文字列だった場合はそのままメッセージとして通知します。
インタプリタと JVM バックエンドはメッセージとコンディションオブジェクトを保持する例外をスローするため、handler-case が型でディスパッチできます。WASM バックエンドはトラップします(捕捉不能)。format と同様に error は関数値を持たないマクロなので、#'error はサポートされません。
捕捉されない error は実行を中止するため、ここでは実行可能な例ではなく静的に示します:
(error "bad value: ~a" x)
(error 'type-error :datum x :expected-type 'integer)