【发布时间】:2011-11-03 18:37:16
【问题描述】:
我正在为 javascript 编写一个测试套件,需要一种方法来捕获任何 JS 错误并继续处理页面的其余部分。
我不能使用 window.onerror,因为 return true 会阻止浏览器继续。我尝试使用 try {} catch 块,但由于各种原因,该函数在窗口 setTimeout() 中运行,这似乎弄乱了 try catch 块。
例如,我做这样的事情:
function test(msg, fn) {
$('#output').text(msg);
try {
fn.apply(this);
} catch(e) {
document.write('error'+e);
};
}
然后这样称呼它
test('trying this', function() { setTimeout('afunction()',100); });
但如果 afunction() 失败,则错误不会被捕获。
是否有人对允许我恢复的解决方案或全局错误处理程序有任何想法?
【问题讨论】: