目次
try…catch構文
try {
console.log("try節:この行は実行されます");
// 未定義の関数を呼び出してReferenceError例外が発生する
undefinedFunction();
// 例外が発生したため、この行は実行されません
} catch (error) {
// 例外が発生したあとはこのブロックが実行される
console.log("catch節:この行は実行されます");
console.log(error instanceof ReferenceError); // => true
console.log(error.message); // => "undefinedFunction is not defined"
} finally {
// このブロックは例外の発生に関係なく必ず実行される
console.log("finally節:この行は実行されます");
}
throw文
意図的に例外を投げることができる。
try {
// 例外を投げる
throw new Error("例外が投げられました");
} catch (error) {
// catch節のスコープでerrorにアクセスできる
console.log(error.message); // => "例外が投げられました"
}
ここで注目したいのは、Errorオブジェクトのインスタンス化 new Error(“エラーメッセージ”)を行っている部分。 以下のようにしてしまうと、スタックトレースされないので非推奨。 (エラーログの重要度が見にくくなるので、デバックがしにくい)
// 文字列を例外として投げるアンチパターンの例
try {
throw "例外が投げられました";
} catch (error) {
// catch節の例外識別子は、投げられた値を参照する
console.log(error); // => "例外が投げられました"
}
今回はここまで。