JavaScript | 例外処理(try…catch) のポイント

JavaScript
スポンサーリンク

主な内容の要点

JavaScriptのtry...catchは、関数の中で発生したエラーも呼び出し元のtry...catchで捕まえられる。ただし、非同期処理(例:setTimeout)の中で起きたエラーは捕まえられないので注意が必要。


ポイント解説

  • 基本の仕組み
    • try...catchは、tryブロック内でエラーが発生するとcatchに処理が移る。
    • tryの中で呼び出した関数内でエラーが起きても、呼び出し元のcatchで処理できる。
  • 例:通常の関数呼び出し
function sum(a, b) {
  return a + b;
}

try {
  console.log(sum(10, 8));   // OK
  console.log(sum(10, 8n));  // BigIntとNumberを混ぜてエラー
} catch (e) {
  console.error(e);          // エラーをキャッチ
}
JavaScript

→ 関数内で起きたエラーも、呼び出し元のcatchで処理できる。

  • 関数が入れ子になっていても同じ
    • 関数A → 関数B → エラー発生、という流れでも、最終的に呼び出した側のtry...catchで捕まえられる。
  • 非同期処理の注意点
    • setTimeoutなどのコールバック関数内で発生したエラーは、外側のtry...catchでは捕まえられない。
try {
  setTimeout(() => {
    // ここでエラーが起きても外側ではキャッチできない
    console.log(10 + 8n);
  }, 1000);
} catch (e) {
  console.error("キャッチできない");
}
JavaScript

→ 実行すると「Uncaught TypeError」として処理が止まる。


初心者が覚えるべきこと

  1. 同期処理の関数内エラーは呼び出し元でキャッチできる
  2. 非同期処理のエラーは外側のtry...catchでは捕まえられない
    → 非同期処理では、コールバック内でtry...catchを書く必要がある。
  3. BigIntとNumberを混ぜるとエラーになるなど、型の違いにも注意。

初心者向けにまとめると、「関数の中でエラーが起きても呼び出し元でキャッチできる。ただし非同期処理は別!」というのが最大のポイントです。

このあたりを理解すると、エラー処理の仕組みがグッと分かりやすくなります。

タイトルとURLをコピーしました