LoginSignup
0
0

JavaScriptでtry文を使った際にchatch句で正しく例外が捕捉されない原因

Last updated at Posted at 2024-06-21

はじめに

JavaScriptでtyr分を使った際にchatch句で正しく例外が捕捉されないという事象が発生したので、原因をまとめました。

当該ソースコード

以下が問題のソースコードです。

main.js
// 処理を実行している最中に例外が起きても例外処理が実行されない
try{
  btnElm.addEventListener('click', () => {
    // 処理
  });
} catch(e) {
  // 例外処理
}

ボタンをクリックして呼び出した処理を実行している最中に例外が発生しても例外処理が実行されません。

原因と対策

原因

ずばり、addEventListenerが非同期で行われる処理であることが原因です。図にすると以下の通りで、addEventListenerの処理が別のコンテキストで行われており、try文で例外を捕捉することができません。

image.png

対策

以下の通りコードを書き直しましょう

main.js
btnElm.addEventListener('click', () => {
    try{
        // 処理
    } catch(e) {
        // 例外処理
    }
});

非同期的に実行されるaddEventListener内で例外を捕捉しているので、ただしく例外処理が実行されます。処理の流れを図に表すと以下の通りです。

image.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0