【发布时间】:2017-07-21 14:04:11
【问题描述】:
如果我有
async function bar() {
throw 'bar';
}
有什么区别
async function foo() {
await bar();
}
和
async function foo() {
try {
await bar();
} catch(e) {
throw e;
}
}
我听说我需要在异步函数中显式捕获并重新抛出异常,但我认为catch(e) { throw e; } 是多余的(如果在再次抛出异常之前没有进行额外的处理或日志记录)。我相信在其他一些语言中就是这样。 JavaScript 呢?
【问题讨论】:
-
您能否附上您说要这样做的来源?
-
@4castle 这是我团队的另一位开发人员,但他引用了this article。我没有看到这篇文章有什么帮助。
-
我看不到文章在哪里说要重新抛出异常。是的,像这样重新抛出没有任何作用。
-
@4castle 我也没有。以下是他的原话:“您需要在每个级别显式捕获异常,否则等待的承诺将吞噬错误。”
-
我不知道他从哪里得到的信息,但这是错误的。它不会吞下错误,而是返回一个被拒绝的承诺。
标签: javascript asynchronous exception-handling