本文へスキップ
BecomeCoder

JavaScriptコース · 第5章 関数 ― 処理に名前をつけてまとめる · レッスン22

例外処理 ― try / catch / throw

ブラウザで完結

導入

実行時に起きるエラー(例外)に備えるのが try / catch です。想定外の入力や失敗を、プログラムを止めずに扱えます。

説明

try の中でエラーが起きると、catch に処理が移ります。自分でエラーを投げるには throw を使います。

function divide(a, b) {
  if (b === 0) {
    throw new Error("0で割れません");
  }
  return a / b;
}

try {
  console.log(divide(10, 2));
  console.log(divide(10, 0));  // ここで例外
  console.log("ここには来ない");
} catch (err) {
  console.log("エラーを捕捉:", err.message);
}
console.log("続きの処理");

finally は成功・失敗どちらでも最後に実行されます(後始末用)。

try {
  console.log("処理中");
  throw new Error("失敗");
} catch (err) {
  console.log("捕捉:", err.message);
} finally {
  console.log("後始末");
}

JSON のパースなど、失敗しうる処理でもよく使います。

try {
  const data = JSON.parse('{"ok": true}');
  console.log(data.ok);
  JSON.parse("{壊れた}");  // 例外
} catch (err) {
  console.log("JSONエラー");
}

やってみよう

divide の引数を変えて、正常系とエラー系の両方を試してみましょう。わざと壊した JSON を parse してみてください。

演習

try / catch を使い、JSON.parse("{bad}") を試みて、失敗したら "パース失敗" と表示してください。

ヒント1を見る

try { JSON.parse("{bad}"); } catch { console.log("パース失敗"); }

実際に動かしてみよう

下のエディタにJavaScriptを書いて「実行」を押すと、ブラウザ内のJavaScriptで出力が表示されます。本文の例をそのまま試したり、書き換えたりしてみましょう(console.log の結果が下に出ます。input() を使う回は「標準入力」欄に値を入れてから実行します)。

JavaScript — ブラウザ内で実行

ブラウザ本体のJavaScriptで実行する学習用環境を読み込みます(外部エンジン不要・軽量です)。
スクロールして表示された時点でも自動で読み込まれます。