例外処理について

javascript
目次

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); // => "例外が投げられました"
}

今回はここまで。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次