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: | エラートラッピングのために、エラーをクラス分けする方法。 |