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 回答