Javascript异步/等待错误处理:catch块中的匹配抛出函数

时间:2020-01-24 02:12:53

标签: javascript error-handling async-await

我发现了几种使用async / await进行干净错误处理的方法。

有人提议:

  1. 立即承诺.catch()处理错误(但它混淆了Promise并等待语法)
  2. 拥有诺言会返回[data, err]而不是抛出(但它会通过错误检查使代码丑陋)
  3. 创建继承Error对象并在instanceof块中的catch上匹配的错误(这很好,但需要定义尽可能多的类)。

在我所有代码中实现选项3之前,我想知道为什么在任何地方都找不到以下内容。如果我的AsyncFunction不会引发其他错误,为什么不直接匹配该函数呢?

async function a() {}
async function b() {
  throw b;
}
(async () => {
  try {
    await a();
    await b();
  }
  catch (err) {
    switch (err) {
    case a: console.log('a threw'); break;
    case b: console.log('b threw'); break; // this one is executed
    }
  }
}) ()

也许有明显的原因使我们不应该这样做,但我被困在那里。

0 个答案:

没有答案