我正在试着在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错误
我想知道为什么漏斗和漏斗鱼没有抓到。谢谢
发布于 2022-01-24 17:23:23
据我理解,try/catch不适用于异步:
“因为errorTest是异步的,所以它总是返回承诺,永远不会在调用它的地方开始执行:它是异步的。errorTest返回,然后在运行errorTest中的一行代码之前退出errorTest块。因此,您的catch块永远不会触发,因为errorTest中没有任何东西会同步抛出异常。”
来源:Why is try {} .. catch() not working with async/await function?
由于异步将返回一个承诺,我相信您将需要使用承诺本身的捕获
funB().then((result) => {
console.log(result);
}).catch((error) => {
console.error(error);
});https://stackoverflow.com/questions/70836391
复制相似问题