async函数-异常处理

本文深入探讨了JavaScript中的async函数如何处理异常,包括try/catch块的应用、错误自动抛出规则以及如何通过Promise链捕获错误。通过实例解析,帮助开发者更好地理解和运用async/await进行异常控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

// try-catch 是 JavaScript 的异常捕获代码
// 就像 if-else 一样是 JavaScript 语法的一部分
// 我们可以把可能有错的的代码放到 try 语句块中
// 如果 try 中代码出错,则进入 catch

// 这样会直接报错导致程序退出
// JSON.parse('dsnajkbdkjsa')


/**
 * try-catch 用于异常捕获
 * 将可能出错的代码写到 try 中
 * try 中代码一旦发生错误,停止 try 中后续代码执行,进入 catch
 * catch 默认接收一个参数:错误信息数据
 * try-catch
 *   默认只能捕获同步代码异常,例如 JSON.parse('dsnajkbdkjsa')
 *   不能捕获普通的异步函数调用的错误
 *   也不能捕获 Promise 中的 reject 异常
 *   但是可以捕获 async 函数中 (await Promise对象 )中的异常
 * try-catch 代码执行顺序
 *   从上到下依次执行,先进入 try,如果 try 中代码没有错误,就继续往后执行
 *   如果 try 中 代码有错误,就进入 catch,catch 执行完毕,继续往后执行
 */


// try {
//   // 一旦遇到错误,停止执行,进入 catch
//   // JSON.parse('dsnajkbdkjsa')
  
//   // 无法捕获异步回调函数异常
//   // fs.readFile('./dsakjbdkjsabkjdsa', (err, data) => {
//   // })

//   // 也无法捕获 Promise 异常
//   // new Promise((resolve, reject) => {
//   //   reject('error')
//   // })
// } catch (err) {
//   console.log('出错了')
// }

// console.log(2)

async function main() {

  // Promise 本身进行异常处理
  // await new Promise((resolve, reject) => {
  //   reject('error1')
  // }).catch(err => {
  //   console.log('出错了')
  // })

  try {
    console.log(1)

    //同步可以捕获到, // 一旦遇到错误,停止执行,进入 catch
    // JSON.parse('dnsabdljsa')//遇到这个错误try里面的代码不执行,直接走catch里面的,然后往后执行

    // 异步捕获不到
    // fs.readFile('dnsajbfsa', (err, data) => {})

    // 异步捕获不到
    // new Promise((resolve, reject) => {
    //   reject(123)
    // })

    await new Promise((resolve, reject) => {
      resolve('hello')
    })
    console.log(2)

    await new Promise((resolve, reject) => {
      reject('world')
    })
    console.log(3)

  } catch (err) {
    console.log('出错了')
  }

console.log(5)
}
main()
console.log(4)
// 1
// 4
// 2
// 出错了
// 5

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值