在Javascript中等待函数时捕获错误的正确方法



我无法在我的函数中捕获拒绝。我已经在谷歌上搜索过了,但是我还没有找到解决方案,所以请帮助我处理这段代码:

async function errorFunc(){
setTimeout(() => {
return Promise.reject("Any error occured!");
}, 1000);
}
async function main(){
await errorFunc().catch((error)=>{
console.log("E in catch:", error);
});

try{
await errorFunc();
}catch(e){
console.log("E in try-catch:", e);
}
}
main();

没有一个catch (inmain()function)工作…在控制台中,简单地打印(两次)这个错误消息:

Uncaught (in promise)发生任何错误!

我想抓住这个错误(或者最好说拒绝承诺)。我如何在我的main()函数中做到这一点?

谢谢!

async function errorFunc(){
return new Promise((resolve, reject) => setTimeout(() => reject("Any error occured!"), 1000))
}

这就是你想要的。


setTimeout(callback, ms)

callback将在全局执行,没有人捕获它。

我认为它打印了两次相同的错误,因为在第二个函数中:

try{
await errorFunc();
}catch(e){
console.log("E in try-catch:", error);
}
}

你打印了"error"我不太明白这个问题但我想这就是它打印两次的原因,

maybe swap "error"与"e"打印捕获的其他错误

你必须从你的函数返回一个Promise

async function errorFunc(){
return new Promise((resolve,reject)=>{
setTimeout(() => {
return reject("Any error occured!");
}, 1000);
})
}
async function main(){
await errorFunc().catch((error)=>{
console.log("E in catch:", error);
});
try{
await errorFunc();
}catch(e){
console.log("E in try-catch:", e);
}
}

相关内容

  • 没有找到相关文章

最新更新