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不符合事件循环机制啊
请各位大佬帮忙看看

已解决 悬赏分:20 - 解决时间 2021-12-03 06:53
反对 0举报 0 收藏 0

回答1

最佳
  • @

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

    支持 0 反对 0 举报
    2021-12-02 12:05