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("失敗");
}
JavaScriptJSON.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);
}
JavaScripterror には「エラーの詳細」が入っています。
ユーザーには見せず、開発者向けログとして使うのが一般的です。
例外処理では「誰に何を見せるか」を分けることが重要です。
デフォルト値で処理を続ける練習
問題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);
JavaScripttry の範囲は「エラーが起きる可能性がある部分だけ」に絞るのが基本です。
範囲が広いと「どこで失敗したのか」が分かりにくくなります。
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);
}
JavaScriptthrow は「この状態はおかしい」と明示するための仕組みです。
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 の使い方
といった実務的な例外処理の基礎が身につきました。
