javascript - 如何使用 async/await 捕获抛出的错误?

标签 javascript asynchronous error-handling async-await

这是一些代码:

  import 'babel-polyfill'

  async function helloWorld () {
    throw new Error ('hi')
  }

  helloWorld()

我也深入尝试过这个:

  import 'babel-polyfill'

  async function helloWorld () {
    throw new Error ('hi')
  }

  async function main () {
    try {
      await helloWorld()
    } catch (e) {
      throw e
    }
  }

  main()

和:

import 'babel-polyfill'

 async function helloWorld () {
   throw new Error ('hi')
 }

try {
 helloWorld()
} catch (e) {
 throw e
}

这个有效:

import 'babel-polyfill'

async function helloWorld () {
  throw new Error('xxx')
}

helloWorld()
.catch(console.log.bind(console))

最佳答案

async is meant to be used with Promises .如果您拒绝 promise ,那么您可以捕获错误,如果您解决 promise ,它将成为函数的返回值。

async function helloWorld () {
  return new Promise(function(resolve, reject){
    reject('error')
  });
}


try {
    await helloWorld();
} catch (e) {
    console.log('Error occurred', e);
}

关于javascript - 如何使用 async/await 捕获抛出的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33562284/

相关文章:

android - kotlin 异步异常处理

node.js - Node 骑士异步不起作用?

angular - 在 RxJS 中处理错误的正确方法是什么?

windows - 是否可以合理地绕过扫描工作目录的防病毒软件?

php - textarea根据内容js或jquery设置高度

javascript - 如何使用带序号的 d3.symbols

javascript - 如何访问返回的 Promise 的值?

node.js - nodejs 中错误优先模式和 promise 的替代方案?

javascript - jQuery e.clientX 返回未定义

javascript - clearInterval 不起作用,间隔未定义