【发布时间】:2020-08-01 22:17:04
【问题描述】:
基本上我有一个包含 try/catch 的异步函数,该函数调用另一个也包含 try catch 的异步函数,我对如何正确实现我正在做的事情有点困惑。一些“伪代码”显示了我当前的实现:
const main = async () => {
try {
const test = await secondFunc();
console.log(test);
} catch(err) {
console.log('Found an error!');
console.log(err);
}
const secondFunc = async () => {
try {
await performSomeRequestExample();
} catch(err) {
if (err.x === 'x') {
doSomething();
} else {
//********
throw err;
//********
}
}
所以我要做的是让throw(err)(被星号包围)被main()中的catch捕获,这也将调用console.log('Found an error!'),但目前发生的是从secondFunc() 抛出错误,main() 中的catch 永远不会被命中,我得到一个未处理的承诺拒绝。
关于我做错了什么的任何指导?
【问题讨论】:
-
你的 else 有没有到达过?如果您在第二个函数中的 await 前面放置一个变量,还有什么变化吗?
标签: javascript node.js error-handling async-await try-catch