为什么函数 A 无法捕获函数 B 抛出的错误



我正在用JavaScript进行尝试和捕获练习。

这是我的代码

function getTime1() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve(11111);
}, 1000);
});
}
function getTime2() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve(22222);
}, 1000);
});
}
async function funB() {
// try {
let b = await getTime2();
throw "B error";
// } catch (e) {
//   console.log("this" + e);
// }
}
async function funA() {
try {
let a = await getTime1();
funB();
} catch (e) {
console.log("that" + e);
}
}
funA();

这是的结果

未捕获(承诺中(B错误

我想知道为什么funb和Funa中没有捕获。谢谢

据我所知,try/catch不适用于async:

"由于errorTest是异步的,它将始终返回promise,并且永远不要在调用它的地方开始执行:它是异步的。errorTest在运行errorTest中的代码。因此,您的捕获块永远不会fire,因为errorTest中没有任何东西会同步抛出例外">

来源:为什么是try{}。。catch((无法使用async/await函数?

由于async将返回Promise,我相信您需要在Promise本身上使用catch

funB().then((result) => {
console.log(result);
}).catch((error) => {
console.error(error);
});

相关内容

  • 没有找到相关文章

最新更新