javascript错误和异常处理程序

时间:2010-12-15 20:03:23

标签: javascript exception handler

是否可以注册将在发生javascript错误或异常时执行的错误或异常处理程序/函数?我只是觉得将try / catch块中的所有代码包装起来似乎非常乏味和低效。

3 个答案:

答案 0 :(得分:6)

window.onerror = function (msg, file, line) {
    // handle error here
}

支持者:

  • Chrome 13 +
  • Firefox 6.0 +
  • Internet Explorer 5.5 +
  • Opera 11.60 +
  • Safari 5.1 +

答案 1 :(得分:1)

Andy E's answer(+1)告诉您如何操作。

也就是说,JavaScript实际上并不意味着捕获了与Java相同的意义。如果您的代码抛出异常,请启动控制台并使用调试器来修复它们。 JS异常很慢,实际上并不意味着用于流控制。除非出现严重问题,否则方法不会抛出异常 - 而且通常是编程错误。

答案 2 :(得分:1)

这是一个替代答案,而不是window.onerror解决方案。这不是我在制作中使用的东西,但由于其灵活性(即你可以用它来调试方法花费多长时间或其他东西),我只是喜欢它。

虽然你可以将window传递给它(不要引用我,并且不认为这是一个好主意)如果你拥有所有methods in an object,它确实有用:

(function(obj) {

    for (var name in obj) {
        if (typeof(obj[name]) == 'function') {
            currentMethod = obj[name];
            obj[name] = function() {
                try {
                    currentMethod();
                }
                catch (e) {
                    alert('Exception Handler: ' + e);
                }
            };
        }
    }

}(myObject));

这是有效的:http://jsfiddle.net/jonathon/kpYnW/

基本上,它遍历对象中的每个属性,找到属于函数的属性并将它们包装在try / catch(或其他任何你想要的东西)中。

它是否有效是另一回事 - 我刚刚发现它是一种非常有用的调试技术。不幸的是我不记得我读过它的原始地方,但如果有人知道,请添加评论。