提问者:小点点

如何在catch语句之外的async/await中拒绝?


正如SO post和answer所概述的,通常会从位于Async/Await函数中的catch语句抛出错误,如下所示:

} catch (error) {
    throw new Error(400);
}

正如同一篇文章所强调的,你通常不会返回一个被拒绝的承诺(见下文),因为它与“try-catch"语句在语义上不匹配。

} catch (error) {
    return Promise.reject(new Error(400));
}

按照同样的逻辑,当从Async/Await函数返回catch语句之外的错误时,我是否应该返回被拒绝的承诺,而不是抛出这些错误?

换句话说,下面的内容在语义上是否与上述逻辑不一致?

async function promise () {
    throw new Error('Some error');
}

而且,由于Async/Await函数隐式返回承诺,所以这是在Async/Await函数内部返回错误的首选方式吗?

async function promise () {
    return Promise.reject(new Error(400));
}

我知道上述两个片段都允许在使用承诺时捕获错误。


共1个答案

匿名用户

通常在可能的情况下使用,例如在回调中,因为它更简单,因此更容易阅读。确实有效,但很长。