01 / 05
おかしな値でも進んでしまう
関数に思っていなかった値が渡ってきても、JavaScript はとくに何も言わない。そのまま計算して、そのまま表示してしまうよ。
下の例は年齢に負の数が来ているのに、何も起きずに通ってしまっている。ここで止められないと、ずっと後ろの行で意味の分からない結果になって、原因がたどれなくなるんだ。
const tellAge = (age) => { console.log(`${age}さいだよ`);};tellAge(-3);実行結果
-3さいだよ
失敗に備える
INPUT · スライド
01 / 05
関数に思っていなかった値が渡ってきても、JavaScript はとくに何も言わない。そのまま計算して、そのまま表示してしまうよ。
下の例は年齢に負の数が来ているのに、何も起きずに通ってしまっている。ここで止められないと、ずっと後ろの行で意味の分からない結果になって、原因がたどれなくなるんだ。
const tellAge = (age) => { console.log(`${age}さいだよ`);};tellAge(-3);実行結果
-3さいだよ
02 / 05
throw new Error("メッセージ") と書くと、その場でエラーを起こせる。メッセージには「何がどうだと困るのか」を自分の言葉で書いておくよ。
throw の行まで来ると、そこから先は動かない。受け止める catch が無ければ、そのままプログラムが止まる。
const checkAge = (age) => { if (age < 0) { throw new Error("としは0いじょうで"); } console.log(`${age}さい`);};checkAge(12);checkAge(-3);実行結果
12さい Error: としは0いじょうで
03 / 05
投げたエラーは、呼び出した側の try / catch で受け止められる。前のレッスンでやったとおりだよ。
catch が受け取った error の message には、自分で書いた文がそのまま入っている。だから読んだ人に伝わる言葉で書いておくと、あとで助かるんだ。
const checkAge = (age) => { if (age < 0) { throw new Error("としは0いじょうで"); } console.log(`${age}さい`);};try { checkAge(-3);} catch (error) { console.log(error.message);}実行結果
としは0いじょうで
04 / 05
throw を書く場所は、おかしな値に気づいたところだよ。関数の入口で調べてはじいてしまうのがいちばん分かりやすい。
そのまま進めてしまうと、変な値が計算を通り抜けて、ずっと後ろの行で「なぜこの結果になるのか分からない」という形で出てくる。近いところで失敗させれば、原因も近いんだ。
const buy = (count) => { if (count <= 0) { throw new Error("こすうは1いじょうで"); } console.log(`${count * 120}円`);};try { buy(0);} catch (error) { console.log(error.message);}実行結果
こすうは1いじょうで
05 / 05
"だめ" とだけ書いてあるメッセージは、あとから読んでも何も分からない。何が・どうだと困るのかを入れておこう。
"エラー""なまえがからっぽ"止めるのは意地悪ではなくて、あとで困らないための親切だよ。それじゃあ、自分でエラーを出してみよう。