Next: , Previous: , Up: 非ローカル脱出   [Contents][Index]


11.7.3 エラー

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

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

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

カレントコマンドの実行を終了せずに問題を報告するためには、かわりに警告の発行を考慮しましょう。警告のレポートを参照してください。

エラーハンドラーを使用せずにプログラムの一部から別の部分へ制御を移すためには、catchthrowを使用します。明示的な非ローカル脱出: catchthrowを参照してください。