求大佬指点哈!关于抛出异常

看了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)
撒科打诨
浏览 229回答 2
2回答

吃鸡游戏

代码就像在一条路上走,一个大石头(Throw)下来,走不动了。但这是说的同步代码的情况setTimeout是异步代码,每个setTimeout就像是新开了一条路,一条路断了不影响另一条

扬帆大鱼

setTimeOut的回调函数会被放进宏任务队列,因此setTimeout(function(){thrownewError('test');console.log(1)},0)setTimeout(function(){console.log(2)},2000)以上代码中的第一个异步任务中的错误并不会影响下一个异步的执行,更常见的例子是比如多个ajax请求,其中一个请求异常,并不会影响下一个请求的执行
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript