捕获回调函数中的异常?

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);

为什么第一个例子的异常不能捕获?


阿晨1998
浏览 861回答 1
1回答

白衣染霜花

这个是16年提出的问题,相信题主已经知道答案了,但我还是回答一下,供后面同学参考:try...catch是被设计成捕获当前执行环境的异常,意思是只能捕获同步代码里面的异常,异步调用里面的异常无法捕获。第一种方式:异常出现在异步调用里面,try..catch无法捕获。第二重方式:try..catch是写在异步代码里面,相对于try里面的所有执行都是同步代码,所以能捕获。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript