是否可以注册将在发生javascript错误或异常时执行的错误或异常处理程序/函数?我只是觉得将try / catch块中的所有代码包装起来似乎非常乏味和低效。
答案 0 :(得分:6)
window.onerror = function (msg, file, line) {
// handle error here
}
支持者:
答案 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(或其他任何你想要的东西)中。
它是否有效是另一回事 - 我刚刚发现它是一种非常有用的调试技术。不幸的是我不记得我读过它的原始地方,但如果有人知道,请添加评论。