【えらーはんどりんぐ】
エラーハンドリング とは?
最終更新:
💡 失敗に気づき、次の対処を決める
プログラムの失敗を検知し、内容に応じて回復・通知・記録・上位への伝達などの対処を行うこと。例外を捕まえても、必ず処理を続行できるとは限らない。
📌 このページのポイント
- JavaScriptのtry-catchは、try内で発生した例外への対処を分ける
- 扱える失敗には回復処理を行い、扱えない例外は上位へ伝えられる
- finallyには、成功・失敗にかかわらず必要な後処理を置ける
- Promiseの拒否は.catch()や、try内のawaitで扱う
エラーを捕まえたら、必ず動き続けられる?
捕まえた後に何をするかによるよ。たとえば入力したJSONが不正なら、JavaScriptのcatchで修正を促せる。ただしcatchでも例外を投げることがあるし、そこで回復できない失敗を上位へ伝える場合もあるんだ。
全部のエラーを無視すれば止まらない?
空のcatchで無視すると、失敗を見落とすよ。そこで対処できる失敗には必要な処理を行い、対処できないものは再びthrowするなどして伝えよう。捕まえたことを、成功したこととして扱わないのが大切だね。
後片付けはcatchに書くの?
成功時にも必要な後処理なら、finallyに置けるよ。tryからそのまま出る場合も、catchを通る場合も実行される。ただしfinallyのreturnやthrowは、それまでの戻り値や例外を上書きすることがあるので注意しよう。
通信のような非同期処理もtryで囲めばいい?
Result型って何が違うの?
RustのResultは、成功の値をOk、失敗の情報をErrに入れた戻り値だよ。呼び出し側はそれを見て対処を分けたり、失敗を上位へ返したりする。例外を捕まえる方法だけがエラーハンドリングではないんだ。
まとめ:ざっくりこれだけ覚えればOK!
「エラーハンドリング」って出てきたら「失敗を検知して対処を決めること」と思えばだいたいOK!
📖 おまけ:英語の意味
「error handling」 = エラーの取り扱い
💬 handle は「扱う・処理する」という意味で、発生したエラーにどう対処するかの仕組み