gpt4 book ai didi

Javascript 捕获,但仍然抛出错误

转载 作者:行者123 更新时间:2023-11-28 20:35:15 25 4
gpt4 key购买 nike

我构建了一个 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com