try-catch属于同步代码块,因此无法捕获异步(重新开辟的线程,例如定时器,异步请求)代码中的异常,即能被try-catch捕获的异常,必须是在报错时候,线程的执行进入了try-catch代码块时,才能被捕获异常。
品牌vi设计公司http://www.maiqicn.com 办公资源网站大全https://www.wode007.com
代码
try{
setTimeout(()=>{//宏任务
a.b//无法捕获
},10)
new Promise((resolve,reject)=>{//微任务
a.b//无法捕获
//通常,promise的异常都是由reject以及Promise.prototype.catch来捕获的,Promise在执行回调中都用try-catch包裹了,错误被内部捕获,不会往上抛
})
function c(){
a.b
}
c()//捕获异常
}catch(e){
console.log('has error',e)
}