Javascript异步操作的异常处理

 2023-09-11 阅读 17 评论 0

摘要:try {throw new Error(3) } catch (e) {console.log(e) }try {setTimeout(function () {throw new Error(5)}, 100) } catch (e) {console.log(e) } 以上代码中,在浏览器是分别输出Error: 3(正常打印出错误实例,未报错)和 Uncaught Error: 5
try {throw new Error(3)
} catch (e) {console.log(e)
}try {setTimeout(function () {throw new Error(5)}, 100)
} catch (e) {console.log(e)
}

以上代码中,在浏览器是分别输出Error: 3(正常打印出错误实例,未报错)和 Uncaught Error: 5(一个未捕获错误):

原因:以上例子中第二个try catch捕获不到错误,因为try catch是同步的,执行到setTimeout时把它放到了异步任务队列里(setTimeout是异步的)没有立即执行setTimeout就往下走了,同步任务执行完再回头把异步任务队列里的setTimeout回调函数拿出来执行就报错了。

js怎么实现异步、要捕获到异常,必须在throw new Error的直接外层用try catch包起来才行:

    setTimeout(()=>{try{throw new Error('fail');}catch (e){console.log(e);}},1000);

 promise的异常处理可以用自带的catch回调函数。

window.onerror = function(err) { return true;};   // 这样可以彻底忽略所有错误

 

js处理异步的方法、转载于:https://www.cnblogs.com/xjy20170907/p/11431121.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/2/43547.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息