为了账号安全,请及时绑定邮箱和手机立即绑定

关于抛出异常

关于抛出异常

慕妹3242003 2019-07-06 23:19:28
看了mdn对于throw的解释:throw语句用来抛出一个用户自定义的异常。当前函数的执行将被停止(throw之后的语句将不会执行),并且控制将被传递到调用堆栈中的第一个catch块。如果调用者函数中没有catch块,程序将会终止。如下代码:并不会打印1和2.functiontest(){thrownewError('lalal');console.log(1);}test();console.log(2);但是下面的代码,为什么可以打印出2呢。不是throw之后的语句将不会执行吗?setTimeout(function(){thrownewError('test');console.log(1)},0)setTimeout(function(){console.log(2)},2000)
查看完整描述

2 回答

?
隔江千里

TA贡献1906条经验 获得超10个赞

代码就像在一条路上走,一个大石头(Throw)下来,走不动了。但这是说的同步代码的情况
setTimeout是异步代码,每个setTimeout就像是新开了一条路,一条路断了不影响另一条
                            
查看完整回答
反对 回复 2019-07-06
?
jeck猫

TA贡献1909条经验 获得超7个赞

setTimeOut的回调函数会被放进宏任务队列,因此
setTimeout(function(){thrownewError('test');console.log(1)},0)
setTimeout(function(){console.log(2)},2000)
以上代码中的第一个异步任务中的错误并不会影响下一个异步的执行,更常见的例子是比如多个ajax请求,其中一个请求异常,并不会影响下一个请求的执行
                            
查看完整回答
反对 回复 2019-07-06
  • 2 回答
  • 0 关注
  • 216 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号