1

に登録されているイベント リスナーから発生した場合、try...catch ブロックはこのエラーをキャプチャしませんwindow。Firefox、Chrome、Safari で同じ動作です。
関数の内容をラップできることはわかっていますが、なぜこの形式で機能しないのですか? この方法で大量のコードをラップし、エラーを静かに追跡したいと考えていました。

try{

    function onLoad(){
        var a = b;
    }

    //onLoad(); //This is caught
    window.addEventListener('load', onLoad, false); //This is not caught

}
catch(e){
    console.log("Catch: ", e);
}
4

2 に答える 2

1

これは、次のコードが原因で発生しました。

window.addEventListener('load', onLoad, false); //This is not caught

ページが読み込まれた後に実行されます。このコードは、try catch ブロックの後に実行されます。必要な動作を得るには、window.onerror を使用する必要があります。

于 2013-08-20T10:27:30.743 に答える
0

コードのせいで

window.addEventListener('load', onLoad, false)

関数 onLoad をウィンドウの 'onLoad' イベントにアタッチするために呼び出すだけです。エラーは発生しません。エラーは関数 onLoad 自体から発生します。その関数内で try catch を実行する必要があります。

于 2013-08-20T10:32:16.880 に答える