promise结合错误监控场景题目

下面代码打印什么,为什么

try{
    Promise.reject(2)
    .catch((e)=>{
        console.log(e) 
        throw new Error(3)
    })
}catch(e){
    console.log(e) 
}


try{ 
    const data = await Promise.reject(2);
     console.log(data);
     console.log(4);
     throw new Error(3);
}catch(e){ 
     console.log(e) 
}

image.png
思路:
Promise.reject(2)是reject这走catch,2则是传递的参数
因此consle.log(e)则打印=========2
throw new Error(3)这里抛出一个错误,并把3传递进去,则被try catch捕获到错误,这是js捕获错误的方式,因此在catch里consle.log(e)则打印=========Error:3
这个我能理解没问题

image.png
我的疑惑:
try代码块里面const data=await Promise.reject(2)走了,

我不明白怎么就只走catch,后面异步的代码咋不走了,
不是要放在微任务里吗,等宏任务走完了再走微任务,
只打2不符合事件循环机制啊
请各位大佬帮忙看看

阅读 1.7k
1 个回答

你把下面一段try catch放到文件里面再打开试试,await不能单独使用的会报错,但是你在浏览器使用它忽略了而已,其实是报错直接走catch了
image.png

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题