次: Cleanups, 前: Examples of Catch, 上: Nonlocal Exits
Emacs Lispが、なんらかの理由で評価できないフォームを評価しようとしたときには、 Emacs Lispはエラー(error)を通知(signals)します。
エラーが通知されると、Emacsのデフォルトの動作は、 エラーメッセージを表示し、現在のコマンドの実行を終了します。 バッファの末尾でC-fを打ったときなどのように、 これはほとんどの場合、適切なことです。
複雑なプログラムでは、単に終了するだけでは満足できないこともあります。
たとえば、プログラムではデータ構造に一時的な変更を加えていたり、
プログラム終了時には削除する必要がある一時的なバッファを作成するでしょう。
そのような場合には、unwind-protect
を使って、
エラー発生時に評価される後始末式(cleanup expressions)を
確立しておきます。
(see Cleanups。)
場合によっては、サブルーティンでエラーが発生しても、
プログラムの実行を継続したいこともあるでしょう。
このような場合には、condition-case
を使って、
エラー状態から制御を回復するための
エラーハンドラ(error handlers)を確立しておきます。
エラー処理を用いてプログラムのある場所から別の場所へ制御を移す、
という誘惑には耐えてください。
そのかわりにcatch
とthrow
を使いましょう。
See Catch and Throw。