JavaScriptでの例外のスロー
前のレッスンでは、何か問題が発生した場合に JavaScriptが例外をスローする2つの場所を 学びました。
しかし、あなたのプロジェクトでは、あなたにとっては例外的な状況であっても、 JavaScriptにとってはそうでない状況があるかもしれません。 そのような場合、独自のカスタム例外を作成し、 スローすることができます。
これに必要な構文を見てみましょう。
まず、new Errorコマンドを使用して例外を作成し、
パラメータとして例外テキストを渡します:
new Error('例外テキスト');
次に、throwコマンドを使用してこの例外をスローする
必要があります:
throw new Error('例外テキスト');
例外をスローすると、JavaScriptは例外的な状況が
発生したと判断します。
これは、try-catch構文を使用してそのような
例外をキャッチし、必要な方法で処理できることを
意味します。
実際の使用例を見てみましょう。 ある数を別の数で割る関数があるとします:
function div(a, b) {
return a / b;
}
ゼロによる除算は禁止されており、 それを試みると例外的な状況が発生するべきである とみなしましょう。 そのために、関数内でゼロによる除算の試みが ないかをチェックします。 ない場合は除算を行い、 ある場合は例外をスローします:
function div(a, b) {
if (b !== 0) {
return a / b;
} else {
throw new Error('ゼロ除算エラー');
}
}
まず、例外をキャッチせずに
0で割ってみましょう:
alert( div(3, 0) );
この場合、スクリプトの実行は中断され、
コンソールに 'ゼロ除算エラー' という
テキストのエラーが表示されます(確認してください)。
次に、私たちのエラーをキャッチして
何らかの処理をしてみましょう:
try {
alert( div(3, 0) );
} catch (error) {
alert('ゼロによる除算は禁止されています');
}
JavaScriptでは、負の数の平方根を求めようとしても 例外はスローされません:
let result = Math.sqrt(-1);
console.log(result); // NaNを出力します
数値の平方根を求める独自の関数を書き、 負の数から平方根を求めようとした場合に 例外をスローするようにしてください。