尝试...使用addEventListener捕获

时间:2013-08-20 10:16:40

标签: javascript try-catch addeventlistener

当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);
}

2 个答案:

答案 0 :(得分:1)

这是因为这段代码:

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

在页面加载后运行。此代码在try catch块之后执行。 要获得所需的行为,您必须使用window.onerror。

答案 1 :(得分:0)

由于代码

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

只需调用将函数onLoad附加到窗口的'onLoad'事件,它就不会出现任何错误, 错误来自函数onLoad本身,你应该在函数内执行try catch