我发现代码error.js 里面就算没有后面的.catch()那部分,也会输出错误信息,如果我把.catch()括号里面的内容改为
console.log('Errorrrrrr:',error.message);
输出的错误信息还是上面的Error bye,也就表示并没有执行catch里面的内容,和老师讲的原理不一样呢,可以帮忙解释一下吗?
楼上已经回答了,我也说一下关于 throw new Error('error')的看法:
如果不是放在定时器里面,后面的catch可以捕获到;
2.如果放在定时器里面(又或者跟之前的课程一样放在一个立即执行函数里面),后面的catch就捕获不到了,不过全局window.onerror可以捕获到。
综上,本质是函数是否进入同一个执行栈,从而影响后续的捕获。
throw new Error("bye"),不应该放在定时器里执行,那样捕捉不到,拿出来就可以了