为什么不能用try catch

为什么不能用try catch

var promise = new Promise(function(resolve, reject) {

try {

throw new Error('test')

} catch (e) {

reject(e)

}

})


promise.catch(function(error) {

console.log(error)

})


不是说resolve和reject是异步操作吗?为什么这里还能用try catch?

正在回答 回答被采纳积分+1

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

2回答
好帮手慕星星 2019-07-03 19:38:26

你好,catch只能拿到同步的错误,如果是异步的就拿不到了,例如:

http://img1.sycdn.imooc.com//climg/5d1c926b00010cb506950364.jpg

http://img1.sycdn.imooc.com//climg/5d1c92740001afd903540087.jpg

视频中可能说的是这个问题。

  • 借个楼----老师它这个0秒也算异步嘛?也拿不到错误
    2020-01-19 14:51:27
  • 定时器中0秒也是异步执行的哦,自己可以举例试试;catch中拿不到异步的错误,是throw new Error()方法输出的错误。祝学习愉快!
    2020-01-19 17:06:59
好帮手慕星星 2019-07-03 18:32:49

你好,异步操作和try catch是没有冲突的,try catch只是捕获的。

异步操作指的是当代码中其他内容执行完之后再执行,例如:

http://img1.sycdn.imooc.com//climg/5d1c84460001cb5906630346.jpg

http://img1.sycdn.imooc.com//climg/5d1c844d000164d304230161.jpg

祝学习愉快!

  • 提问者 soso_crazy #1
    视频中大约0:39分说到的try catch没有用是什么意思?
    2019-07-03 18:48:43
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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