如何在javascript中捕获和恢复全局错误?

时间:2011-11-03 18:37:17

标签: javascript error-handling

我正在编写一个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()失败则错误没有被捕获。

有没有人对允许我恢复的解决方案或全局错误处理程序有任何想法?

1 个答案:

答案 0 :(得分:2)

window.onerror,你可以附加一个处理函数。如果该函数返回true,则会阻止错误:http://jsfiddle.net/pimvdb/qAv9J/2/

window.onerror = function(e) {
    console.log(e);
    return true;
};