function throwError(){ throw new Error('ERROR');
}
try{
setTimeout(throwError, 0);
} catch(e){
alert(e);//这里的异常无法捕获}这样可以function throwError(){ try{ throw new Error('ERROR');
}
} catch(e){
alert(e);//这里的异常无法捕获}
setTimeout(throwError, 0);为什么第一个例子的异常不能捕获?
1 回答

白衣染霜花
TA贡献1796条经验 获得超10个赞
这个是16年提出的问题,相信题主已经知道答案了,但我还是回答一下,供后面同学参考:
try...catch是被设计成捕获当前执行环境的异常,意思是只能捕获同步代码里面的异常,异步调用里面的异常无法捕获。
第一种方式:异常出现在异步调用里面,try..catch无法捕获。
第二重方式:try..catch是写在异步代码里面,相对于try里面的所有执行都是同步代码,所以能捕获。
添加回答
举报
0/150
提交
取消