我正在编写一个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); });
但是如果fiunction()失败则错误没有被捕获。
有没有人对允许我恢复的解决方案或全局错误处理程序有任何想法?
答案 0 :(得分:2)
有window.onerror
,你可以附加一个处理函数。如果该函数返回true
,则会阻止错误:http://jsfiddle.net/pimvdb/qAv9J/2/。
window.onerror = function(e) {
console.log(e);
return true;
};