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回调函数拿出来执行就报错了。

要捕获到异常,必须在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;};   // 这样可以彻底忽略所有错误

转载于:https://www.cnblogs.com/xjy20170907/p/11431121.html

Javascript异步操作的异常处理相关推荐

  1. C++、Java、JavaScript中的异常处理(Exception)

    编程思想之异常处理 什么叫异常处理? 什么叫异常(Exception)?顾名思义就是非正常的情况,出现了不希望出现的意外,异常处理就是遇到这种意外时准备的对策和解决方案.比如您开着一辆劳斯莱斯在公路上 ...

  2. JavaScript 异步操作之回调函数

    本文试图尝试站在初学 异步 编程的角度来解释什么是 回调函数. 同步和异步 在介绍 回调函数 之前,先来看两个概念 同步 和 异步. 同步 行为通常指代码从上到下一行一行的顺序执行,后面的代码总是在前 ...

  3. javascript中的异常处理

    简单来说,可以用如下的语句,来处理javascript中的异常. function message() {     try {         adddlert("Welcome guest ...

  4. 处理 JavaScript 异步操作的几种方法总结

    引言 js的异步操作,已经是一个老生常谈的话题,关于这个话题的文章随便google一下都可以看到一大堆.处理js的异步操作,都有一些什么方法呢?仁者见仁智者见智 一.回调函数 传说中的"ca ...

  5. JavaScript 浅析try-catch-finally异常处理是什么意思

    文章目录 try-catch-finally语句 1 作用 2 执行流程 3 常见的错误类型 try-catch-finally语句 1 作用 用于语句发生错误时,捕获错误异常,并做出相应处理. tr ...

  6. JavaScript标准参考教材(alpha)--笔记

    一.导论 二.基本语法 1.严格来说var a=1与a=1效果不太一样,delete命令无法删除前者. JavaScirpt是一种动态类型语言,也就是说,变量的类型没有限制,可以赋予各种类型的值. J ...

  7. JavaScript错误与异常

    JavaScript错误与异常 下面是对JavaScript错误与异常的整理,希望可以帮助到有需要的小伙伴. 1.错误与异常是什么 错误,指程序中的非正常运行状态,在其它编程语言中称为"异常 ...

  8. JavaScript Promise对象详解

    Promise是JavaScript异步操作解决方案.介绍Promise之前,先对异步操作做一个详细介绍. JavaScript的异步执行 概述 Javascript语言的执行环境是"单线程 ...

  9. JavaScript高级语法之异步Promise(2:深入)

    目录 1 JavaScript的异步执行 1.1 概述 1.2 回调函数 1.3 事件监听 1.4 发布/订阅 1.5 异步操作的流程控制 1.6 串行执行 1.7 并行执行 1.8 并行与串行的结合 ...

最新文章

  1. 吴恩达:关于机器学习职业生涯以及阅读论文的一些建议
  2. Unity 4.x 2D游戏开发基础教程
  3. 美团2020年全年财务报告:疫情期间网络营销之下的美团选择进军社区团购
  4. TCP/IP数据包结构分析
  5. 简单的 XML、DTD 文件
  6. C-Sharp网络编程案例解析(Socket类的使用)
  7. Java面经总结(2020/10.20~11.20)
  8. 关闭445端口bat脚本
  9. python实现多语言语种识别_Python检测多国语言
  10. 磁盘分区方式对比(MBR与GPT)
  11. 微信小程序前端微信支付功能 支付流程
  12. 我心目中的编程高手(不得不转)
  13. 有 3 只老鼠,8 瓶水,其中一瓶有毒,喝到有毒的水之后,老鼠一周后会准时死亡。...
  14. 数据标注软件 【labelimg】
  15. 鸿蒙操作系统游戏模式,鸿蒙OS 2.0采用鸿蒙和Android 10双架构,游戏性能比EMUI11表现好...
  16. 听见丨HTC推国行VR一体机VIVE Focus:搭载骁龙835+AMOLED屏 Embark开始测试用无人驾驶卡车运送冰箱
  17. ROS path [0]=/opt/ros/melodic/share/ros这种错误所有的可能性
  18. day03【List、Set】
  19. 2022年G2电站锅炉司炉考试题模拟考试题库模拟考试平台操作
  20. Cesium自定义天空盒子图片

热门文章

  1. JavaScript中的call、apply、bind如何使用
  2. 关于将表单上传到服务器
  3. 实验三:跟踪分析Linux内核启动过程
  4. Yii中常用路径(转)
  5. Unity手游之路三 基于Unity+Java的聊天室源码
  6. 利用jquery.validate异步验证用户名是否存在
  7. 一个不错的网络基础知识网站
  8. webpack安装报错(Unexpected end of JSON input while parsing near '...e6139ad7957,tarball')
  9. 清理 Xcode 10
  10. Django:新手入门学习资料汇总