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