在等待异步函数时,是否需要显式捕获并重新抛出异常?

时间:2017-03-02 01:43:26

标签: javascript asynchronous exception-handling

如果我有

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?

1 个答案:

答案 0 :(得分:3)

你不必抓住并重新抛出。如果表达式是拒绝的承诺,则表达式将抛出拒绝的值。

Source