JavaScript | ゼロからはじめるプログラミング、30日で基礎を学ぶJavaScript:JavaScriptを使えるレベルにする - Day13:例外処理 練習問題

JavaScript JavaScript
スポンサーリンク

Day13 例外処理の練習問題

try / catch は「エラーが起きてもアプリを落とさない」ための超重要スキルです。
ここでは、初心者でも確実に理解できるように、実践的な練習問題と丁寧な解説をまとめます。


try / catch の基本練習

問題1:JSON.parse の成功と失敗を try / catch で処理する

次の text を JSON.parse し、成功したら「成功」、失敗したら「失敗」と表示してください。

const text = "これはJSONではありません";
JavaScript

解答と解説

try {
  const data = JSON.parse(text);
  console.log("成功");
} catch (error) {
  console.log("失敗");
}
JavaScript

JSON.parse は「外部から来た文字列」を扱うため、失敗しやすい処理です。
try の中で失敗すると catch にジャンプし、プログラムは止まりません。
「落とさずに処理を続ける」ための最も基本的な例外処理です。


エラー内容を利用する練習

問題2:catch の error.message を表示する

次のコードで JSON.parse が失敗したとき、
catch の中で error.message を表示してください。

const text = "{name: 'Taro'}"; // 不正なJSON
JavaScript

解答と解説

try {
  const data = JSON.parse(text);
  console.log(data);
} catch (error) {
  console.log("エラー内容:", error.message);
}
JavaScript

error には「エラーの詳細」が入っています。
ユーザーには見せず、開発者向けログとして使うのが一般的です。
例外処理では「誰に何を見せるか」を分けることが重要です。


デフォルト値で処理を続ける練習

問題3:失敗したら安全なデフォルト値を使う

次の text を JSON.parse し、失敗したら
{ theme: "light" }
を settings に代入してください。

const text = "invalid json";
JavaScript

解答と解説

let settings;

try {
  settings = JSON.parse(text);
} catch (error) {
  settings = { theme: "light" };
}

console.log(settings);
JavaScript

例外処理の基本パターンのひとつが「安全なデフォルト値に切り替える」です。
外部データが壊れていてもアプリを落とさず、
安全側に倒した値で処理を続けられます。


try の範囲を意識する練習

問題4:try の範囲を最小限にする

次のコードは try の範囲が広すぎます。
JSON.parse の部分だけを try / catch で囲むように書き直してください。

try {
  const text = "invalid json";
  const data = JSON.parse(text);
  console.log("データ:", data);
} catch (error) {
  console.log("エラー");
}
JavaScript

解答と解説

const text = "invalid json";
let data;

try {
  data = JSON.parse(text);
} catch (error) {
  console.log("パース失敗");
  data = null;
}

console.log("データ:", data);
JavaScript

try の範囲は「エラーが起きる可能性がある部分だけ」に絞るのが基本です。
範囲が広いと「どこで失敗したのか」が分かりにくくなります。


throw と catch の練習(軽め)

問題5:不正な年齢なら throw する

age が 0 未満なら
throw new Error("年齢が不正です")
を実行し、catch でエラーメッセージを表示してください。

const age = -5;
JavaScript

解答と解説

try {
  if (age < 0) {
    throw new Error("年齢が不正です");
  }
  console.log("年齢:", age);
} catch (error) {
  console.log("エラー:", error.message);
}
JavaScript

throw は「この状態はおかしい」と明示するための仕組みです。
catch で受け止めることで、
「異常な状態を見逃さない」コードになります。


セキュリティ視点の練習

問題6:ユーザーには優しく、ログには詳細を残す

次のコードで JSON.parse が失敗したとき、
ユーザーには「読み込みに失敗しました」と表示し、
ログには error.message を出してください。

const text = "invalid json";
JavaScript

解答と解説

try {
  const data = JSON.parse(text);
  console.log("成功:", data);
} catch (error) {
  console.log("読み込みに失敗しました");
  console.error("詳細ログ:", error.message);
}
JavaScript

ユーザーに内部エラーを見せるのは危険です。
内部構造やエラーメッセージが攻撃者のヒントになる可能性があります。
例外処理では「ユーザー向け」と「開発者向け」を分けるのが鉄則です。


Day13 練習問題まとめ

try は「エラーが起きるかもしれない処理を囲う場所」。
catch は「エラーを受け止めて、どう振る舞うかを書く場所」。

例外処理の本質は、
「エラーが起きてもアプリを落とさず、安全に続ける」ことです。

今回の練習問題で、
安全なデフォルト値
ログの分離
try の範囲の最適化
throw の使い方

といった実務的な例外処理の基礎が身につきました。

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