我构建了一个 javascript 函数,它将多个 ajax 函数合并到一个请求中。对于每个请求,几乎总是有一个回调函数。捆绑函数一次调用一个回调函数。
我用 try catch 包围了它们,以防止一个函数阻止其他函数运行。但是,我仍然希望浏览器通知我有关 javascript 错误的信息。我怎样才能做到这一点?
我已经举了一个我想要做的例子 here .
上面 jsfiddle 链接中的代码:
<script>
function doSomeStuff() {
for (var i in arguments) {
try {
arguments[i].apply(this);
}
catch (e) {
throw e;
}
}
}
doSomeStuff(function() { console.log("i'm an apple"); },
function() { imnotavariable = test; },
function() { console.log("i'm an apple too"); });
</script>
问题摘要:如何捕获错误,同时仍将其报告给浏览器?
最佳答案
如果您希望循环完成(即调用所有函数),则不能在其中抛出错误。实现您想要的效果的一种方法是保存错误并在循环后将其抛出,即
var error = null;
for (...) {
try {
...
}
catch(e) {
error = e;
}
}
if(error != null) { throw error; }
这只会传播最后一个错误。如果您想捕获发生的所有错误,则需要将它们合并为一个错误,然后您可以再次抛出该错误。
Tom 的替代解决方案
您还可以在抛出
上设置超时,这样就不会干扰函数的执行。
function doSomeStuff() {
for (var i in arguments) {
try {
arguments[i].apply(this);
}
catch (e) {
setTimeout(function() { throw e; }, 100);
}
}
}
关于Javascript 捕获,但仍然抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15571809/