Next: Cleanups, Previous: Examples of Catch, Up: Nonlocal Exits [Contents][Index]
Emacs Lispが何らかの理由で評価できないようなフォームの評価を試みると、エラー(error)がシグナル(signal)されます。
エラーがシグナルされるとエラーメッセージを表示して、カレントコマンドの実行を終了するのがEmacsデフォルトの反応です。たとえばバッファーの最後でC-fとタイプしたときのように、ほとんどの場合にはこれは正しい反応になります。
複雑なプログラムでは単なる終了が望ましくない場合もあるでしょう。たとえばそのプログラムがータ構造に一時的に変更を行なっていたり、プログラム終了前に削除する必要がある一時バッファーを作成しているかもしれません。このような場合には、エラー時に評価されるクリーンアップ式(cleanup
expressions)を設定するために、unwind-protect
を使用するでしょう(Cleanupsを参照)。サブルーチン内のエラーにもかかわらずに、プログラムの実行を継続したいときがあるかもしれません。このような場合には、エラー時のリカバリーを制御するエラーハンドラー(error
handlers)を設定するためにcondition-case
を使用するでしょう。
エラーハンドラーを使用せずにプログラムの一部から別の部分へ制御を移すためには、catch
とthrow
を使用します。Catch and Throwを参照してください。
• Signaling Errors | エラーを報告する方法。 | |
• Processing of Errors | エラーを報告するときEmacsが何を行なうか。 | |
• Handling Errors | エラーをトラップして実行を継続する方法。 | |
• Error Symbols | エラートラプのためにエラーをクラス分けする方法。 |