异步异常处理--用promise包装异步方法的错误捕获的疑问

来源:4-4 全局异常处理中间件编写

GivenCui

2019-06-26

// 异步的异常处理
async function fun1() {
  try {
    const res = await fun2()
    console.log(res)
  } catch (error) {
    console.log(
      '*******捕捉到了一个错误*******\n',
      error,
      '\n******************************'
    )
  }
}
async function fun2() {
  return await fun3()
}
async function fun3() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      try {
        const r = Math.random()
        a
        if (r < 0.6) {
          reject('error')
        }
        resolve('success')
      } catch (error) {
        reject(error)
      }
    }, 1000)
  })
}
fun1()


fun3中如果不try-catch, 是捕捉不到错误的

写回答

1回答

牛顿的菠萝

2019-06-27

仔细看fun3中的 try catch 是多余的,因为try总是成功

0
1
GivenCui
有个未定义变量 a,这里会报错
2019-06-27
共1条回复

Node.js+Koa2+MySQL打造前后端分离精品项目《旧岛》

理解异步编程本质/培养面向对象思维,独立完成Node.js服务端开发

2238 学习 · 882 问题

查看课程