Next: , Previous: , Up: Nonlocal Exits   [Contents][Index]


10.5.3 Errors

Emacs Lispが、何らかの理由により評価できないようなフォームの評価を試みた場合には、エラー(error)シグナル(signal)されます。

エラーがシグナルされた場合、エラーメッセージの表示とカレントこまんどの実行の終了が、Emacsデフォルトの反応です。たとえばバッファーの最後でC-fとタイプしたときのように、ほとんどの場合、これは正しい反応です。

複雑なプログラムでは、単なる終了が望ましくない場合もあるでしょう。たとえば、そのプログラムはデータ構造に一時的に変更を行なっていたり、プログラム終了前に削除すべき一時バッファーを作成しているかもしれません。このような場合、エラー時に評価されるクリーンアップ式(cleanup expressions)を設定するために、unwind-protectを使用するでしょう(Cleanupsを参照してください)。サブルーチン内のエラーにもかかわらずに、プログラムの実行を継続したいときがあるかもしれません。この場合、エラー時のリカバリーを制御するためのエラーハンドラー(error handlers)を設定するために、condition-caseを使用するでしょう。

エラーハンドリングを使用せずに、プログラムの一部から別の部分へ制御を移すためには、catchthrowを使用します。Catch and Throwを参照してください。