Next: Processing of Errors, Previous: Errors, Up: Errors
ほとんどのエラーは、他の目的で呼び出したLisp関数の内部で『自動的』に
通知されます。
整数のcarを計算しようとしたり、
バッファの末尾で1文字進めようとしたりしたときなどです。
関数error
や関数signal
で、
明示的にエラーを通知することもできます。
ユーザーがC-gを打ったときに発生する中断は、 エラーとは考えませんが、エラーのように扱います。
この関数は、format-stringとargsに
format
(see String Conversion)を適用して作った エラーメッセージを伴ったエラーを通知する。
error
の典型的な使い方を以下に示す。(error "That is an error -- try something else") error--> That is an error -- try something else (error "You have committed %d errors" 10) error--> You have committed 10 errors
error
は、2つの引数、 エラーシンボルerror
とformat
が返す文字列を含むリスト でsignal
を呼び出すことで動作する。警告: 独自のエラーメッセージをそのまま使いたい場合に、 単に
(error
string)
とは書かないこと。 stringに‘%’が含まれていると、 それは書式付け指定と解釈され、予測不能な結果を招く。 そのかわりに、(error "%s"
string)
を使う。
この関数は、error-symbolという名前のエラーを通知する。 引数dataは、エラーの状況に関連したLispオブジェクトのリストである。
引数error-symbolは、エラーシンボル(error symbol)である 必要がある。 つまり、属性
error-conditions
を持つシンボルであり、 その属性値は条件名のリストである。 これにより、Emacsはエラーの異なる種類を分類する。dataのオブジェクトの個数と重要性はerror-symbolに依存する。 たとえば、エラー
wrong-type-arg
では、 リストには2つのオブジェクトがあるはずで、 予期した型を表す述語とその型に一致しなかったオブジェクトである。 エラーシンボルの説明は、see Error Symbols。error-symbolとdataの両者は、 任意のエラーハンドラで利用できる。
condition-case
は、ローカル変数に フォーム(
error-symbol.
data)
のリストを束縛する (see Handling Errors)。 エラーが処理されないと、これらの2つの値はエラーメッセージの表示に使われる。関数
signal
はけっして戻らない (しかし、Emacsの古い版では戻る場合もある)。(signal 'wrong-number-of-arguments '(x y)) error--> Wrong number of arguments: x, y (signal 'no-such-error '("My unknown error condition")) error--> peculiar error: "My unknown error condition"
Common Lispに関した注意: Emacsには、Common lispの継続可能なエラーの概念に相当するものはない。