JS

try-catch

中級

読み方:トライキャッチ|英語:Try Catch

エラーが起きても処理を止めずに対処する構文で、tryの中でエラーが起きるとcatchに移るよ。いつ使う? JSON.parse()やfetch()など、失敗する可能性がある処理を安全に実行したいときに使うよ。間違いやすいポイント: try-catchは同期的なエラーしかキャッチできないよ。async/awaitと組み合わせれば非同期エラーもキャッチできるよ。

やさしい説明

try-catchは、エラーが起きてもプログラムを止めずに対処する仕組みです。

try の中でエラーが起きると、プログラムが止まる代わりに catch ブロックに移動します。そこでエラーメッセージを表示したり、代替処理を実行したりできます。

finally ブロックを追加すると、成功でも失敗でも「必ず実行する処理」を書けます。

具体例・使い方

// JSONのパースでエラーをキャッチ
try {
  const data = JSON.parse(text);
  console.log(data);
} catch (err) {
  console.error("JSONが不正です:", err.message);
} finally {
  console.log("処理完了");  // 必ず実行される
}

// async/awaitと組み合わせる
async function fetchData() {
  try {
    const res = await fetch(url);
    return await res.json();
  } catch (err) {
    console.error("通信エラー:", err);
    return null;
  }
}

いつ使う?

API通信(ネットワークエラーの可能性)、JSONパース(不正なデータの可能性)、ユーザー入力の処理(予期しない値の可能性)など、エラーが起きうる処理に使います。

間違いやすいポイント

❌ catchの中で何もしない(エラーを握りつぶす)

// ❌ エラーを無視するとバグの原因がわからない
try { ... } catch (e) {}

// ✅ 最低限ログを出す
try { ... } catch (e) { console.error(e); }

よくある疑問

Q: finallyとは?

A: try-catch-finally のfinallyは、成功でも失敗でも必ず実行されるブロックです。ローディング表示の解除などに使います。

Q: catchの引数eとは?

A: エラーオブジェクトです。e.message でエラーメッセージ、e.stack でスタックトレースが取得できます。

Q: 全ての処理をtry-catchで囲むべき?

A: いいえ。失敗する可能性がある処理(外部通信、JSON解析、ユーザー入力の処理等)だけ囲みましょう。

関連用語

📖 関連レッスン

レッスンを見る →

関連ブログ記事

⚠️ 関連するエラー

❓ 関連するQ&A