我发现使用异步回调我需要为每个回调函数编写一个try / catch。似乎有点容易出错是否有一种方法或技术,我可以实现一个顶级的try / catch捕获一切?如果不是我使用的技术被认为是良好的做法,还是有更好的方法来做事?
答案 0 :(得分:1)
不,不要全力以赴,这几乎总会导致问题(因为你无法很好地区分异常)。
答案 1 :(得分:1)
有两种方法可以做到这一点:
onerror
attribute
true
(!)可以防止默认错误处理(使其成为一个全能型)error
添加window
事件监听器
e
作为其唯一参数调用e.preventDefault()
可防止默认错误处理如果不是我使用的技术被认为是良好的做法,还是有更好的方法来做事?
由于JavaScript的动态特性,try/catch
非常慢。几乎总有更好的方法,例如:在调用方法之前检查是否存在某些东西。
// bad
try {
document.getElementById('foo').focus();
} catch(e) {
alert('foo not found');
}
//good
var el = document.getElementById('foo');
if (el) {
el.focus();
} else {
alert('foo not found');
}
根据您的具体情况,请显示您的部分代码;也许在一个单独的问题中。
答案 2 :(得分:0)
依赖全局捕获可能不是一个好主意,但是拥有一个并不是一个坏主意(在你可能没想到的情况下抛出错误的情况)。这样您就可以按照自己的方式处理未捕获的错误。
使用jQuery:
$(window).error(function (msg, url, line) {
//do something
});