Emacs Lisp が、何らかの理由で評価できないフォームを評価しようとすると、エラーをシグナルします。
エラーが検出されると、Emacsのデフォルトの動作は、エラーメッセージを表示して現在のコマンドの実行を終了することです。バッファの末尾に C-f と入力した場合など、ほとんどの場合においてこれが適切な処理となります。
複雑なプログラムでは、単純な終了が必ずしも望ましいとは限りません。例えば、プログラムがデータ構造に一時的な変更を加えたり、プログラムの終了前に削除すべき一時バッファを作成したりしている場合があります。このような場合には、unwind-protect を使用して、エラー発生時に評価される クリーンアップ式 を定義します。(非局所的な終了からのクリーンアップ
を参照してください。)また、サブルーチンでエラーが発生しても、プログラムの実行を継続させたい場合があります。このような場合には、condition-case を使用して、エラー発生時に制御を回復するための エラーハンドラ を定義します。
現在のコマンドの実行を終了させずに問題を報告する場合は、代わりに警告を出すことを検討してください。警告の報告を参照してください。
エラー処理を用いてプログラムのある部分から別の部分へ制御を移したいという誘惑に抗い、代わりに catch と throw を使用してください。明示的な非ローカル終了: catch と throw を参照してください。