有两个问题?

有两个问题?

图片描述
图片描述

  1. 控制台之所以能打印出这个Promise是不是因为p1被作为参数传到了catch里面的err?
    图片描述
    图片描述
  2. 为什么当p1的状态改成reject,就捕获不到错误?

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,问题解答如下:

1、是的,理解是对的。

2、因为catch捕获的是Promise.reject抛出的错误,无法捕获到p1的错误,如下图所示:

https://img1.sycdn.imooc.com//climg/63c358f809a755a113200356.jpg

如果想要捕获p1的错误,建议直接针对p1添加catch方法,示例:

https://img1.sycdn.imooc.com//climg/63c3596109defd6d16800608.jpg

祝学习愉快~

  • 慕勒8540250 提问者 #1

    https://img1.sycdn.imooc.com//climg/63c3a76f0917544406790177.jpg

    https://img1.sycdn.imooc.com//climg/63c3a789091b6cc504240054.jpg

    老师如果我把代码改成如上形式,控制台不是应该只会打印出未捕获的错误?为什么也打印出了Promise?

    2023-01-15 15:18:18
  • 好帮手慕慕子 回复 提问者 慕勒8540250 #2

    同学你好,可以参考如下理解理解:

    1、因为Promise.reject()方法中的p1会原本不动的向后传递,作为后续方法的参数,但是并没有针对Promise.reject()进行错误处理,所以直接抛出错误,信息为p1,即一个Promise对象。

    可以参考之前的回答,先捕获p1的错误,然后验证这里是Promise.reject()抛出的错误,如下:

    https://img1.sycdn.imooc.com//climg/63c3b76309d8324b22660906.jpg

    2、因为同学粘贴的代码,并没有针对p1进行错误处理,也会抛出错误,所以最终控制台一共有两条错误信息。

    祝学习愉快~

    2023-01-15 16:21:57
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师