gpt4 book ai didi

javascript - 在JS中,如何捕获用户自定义函数异步调用抛出的错误?

转载 作者:行者123 更新时间:2023-12-03 09:30:40 27 4
gpt4 key购买 nike

我正在编写一个采用用户定义函数的库。我无法控制它们所做的事情,但我想捕获它们引起的所有错误。

他们还可能进行异步调用,例如 setTimeout,这可能会引发错误。我也想捕获这些错误。

例如——

// Suppose this is passed as an argument to the module
var userFunction = function() {
setTimeout(function() { throw Error("fail") }, 200);
}

// This is module code
try {
userFunction();
} catch (e) {
console.log("Caught error");
}

— 因错误而失败并打印堆栈跟踪。 catch 未触发。

我可以看到这是如何发生的:错误是从传递给 setTimeout 的函数引发的,该函数在 try-catch 之后调用在不同的背景下已经过去了。

我该如何处理它?这可能吗?

如果给定一个可能调用 setTimeout 或其中其他异步进程的函数,我如何捕获它们可能抛出的错误?

最佳答案

您可以使用window.onerror来捕获所有错误

try {
setTimeout(function() { throw Error("fail") }, 2000);
} catch (e) {
console.log("Caught");
}

window.onerror = function (){
document.body.innerHTML = "Test";
}

或者您可以在异步方法中使用try catch

setTimeout(function() {
try {
throw Error("fail");
} catch (e) {
console.log("Caught");
}
}, 2000);

关于javascript - 在JS中,如何捕获用户自定义函数异步调用抛出的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31519354/

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