【れいがいしょり】
例外処理 とは?
最終更新:
💡 例外が起きたら、続けるか伝えるかを決めて対処する
実行中に発生した例外を捕捉し、代替処理や通知、呼び出し元への伝播などで対処する仕組み。JavaScriptやJavaのtry-catch、Pythonのtry-exceptが代表的。
📌 このページのポイント
- try-catchやtry-exceptで、対象の例外に応じた処理を書く
- 捕捉しただけで復旧するわけではなく、対処方法を実装する
- finallyは通常、try文を抜けるときの後始末に使う
- 原因が分からなくなるような無条件の握りつぶしを避ける
例外処理って何のため?
例えばPythonでファイルを開こうとして見つからない場合など、例外が起きたときの対処を用意するためだよ。メッセージを出して再入力を求める、呼び出し元へ伝える、といった方法があるんだ。
tryで囲めばそのまま続けられるの?
囲むだけでは足りないよ。Pythonならexceptで対象の例外を捕捉し、代替処理などを書く。例外が起きた位置からtry内の残りは飛ばされるし、捕捉できなければ呼び出し元へ伝わるんだ。
どんな例外でもまとめて捕まえればいい?
対処できる種類を具体的に指定すると、本来のバグを隠しにくいよ。すべて無視して続けると、不完全なデータで次の処理を進めるかもしれない。必要なら情報を記録して、再び例外を送る方法もあるんだ。
finallyって何?
ファイルを閉じる処理を毎回書くの?
Pythonのファイル操作ならwith文を使うと、ブロックを抜けるときにファイルを閉じられるよ。後始末と、例外から復旧する処理は別の役割だから、必要に応じて組み合わせよう。
もっと詳しく知りたい人へ
finallyがあれば、どんな終了方法でも後始末できる?
できません。finallyは言語の通常の制御の流れで実行されるものです。例えばPythonのos._exit()は後始末のハンドラなどを呼ばずにプロセスを終了します。finallyだけであらゆる停止に対応できると考えず、重要なデータをいつ保存するかも設計します。
まとめ:ざっくりこれだけ覚えればOK!
「例外処理」って出てきたら「例外が起きたときの対処を用意する仕組み」と思えればだいたいOK!
📖 おまけ:英語の意味
「Exception Handling」 = 例外への対処
💬 通常の処理の流れから外れた例外を、どう扱うか決めるという意味だよ