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

关于抛出异常求指导!

关于抛出异常求指导!

森栏 2019-07-26 23:37:44
看了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贡献1828条经验 获得超3个赞

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

TA贡献2016条经验 获得超9个赞

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

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信