1、如果代码发生了错误,又没有被try ... catch捕获,那么,程序执行流程会跳转到哪呢?

function getLength(s) {return s.length;
}function printLength() {console.log(getLength('abc')); // 3console.log(getLength(null)); // Error!
}printLength();

2、 如果在一个函数内部发生了错误,它自身没有捕获,错误就会被抛到外层调用函数,

  如果外层函数也没有捕获,该错误会一直沿着函数调用链向上抛出,直到被JavaScript引擎捕获,代码终止执行。

  所以,我们不必在每一个函数内部捕获错误,只需要在合适的地方来个统一捕获,一网打尽:

function main(s) {console.log('BEGIN main()');try {foo(s);} catch (e) {console.log('出错了:' + e);}console.log('END main()');
}function foo(s) {console.log('BEGIN foo()');bar(s);console.log('END foo()');
}function bar(s) {console.log('BEGIN bar()');console.log('length = ' + s.length);console.log('END bar()');
}main(null);

BEGIN main()
BEGIN foo()
BEGIN bar()
出错了:TypeError: Cannot read property 'length' of null
END main()

3、当bar()函数传入参数null时,代码会报错,错误会向上抛给调用方foo()函数,foo()函数没有try ... catch语句,所以错误继续向上抛给调用方main()函数,main()函数有try ... catch语句,所以错误最终在main()函数被处理了。

至于在哪些地方捕获错误比较合适,需要视情况而定。

转载于:https://www.cnblogs.com/slightFly/p/11576820.html

错误传播 --try{}catch(e){console.log(e)}相关推荐

  1. android浏览器400错误代码,console.log在谷歌浏览器和Android浏览器的本地代码错误...

    即时通讯使用以下功能来显示数据后,用户点击注册button.This工程完美罚款Mozilla Firefox,但给谷歌浏览器和Android浏览器本地代码错误,IM错了?console.log在谷歌 ...

  2. js重写console.log函数

    重写console.log函数 在前端开发中console.log是我们必不可少的调试工具,但是原生的console.log有两点不能很好地满足我们的需求 开发时需要log,但是上线时希望去掉log, ...

  3. JavaScript console.log导致错误:“不赞成在主线程上使用同步XMLHttpRequest…”

    本文翻译自:JavaScript console.log causes error: "Synchronous XMLHttpRequest on the main thread is de ...

  4. js 系统教程-15-js 语法之命令行-console.log,console.info,console.error,console.warn,debugger

    目录 目录 console 对象与控制台 console console 对象的静态方法 格式占位符 console.warn(),console.error() console.table() co ...

  5. js技巧 console.log使用

    很多时候,我们就用到console.log()来输入一个信息,用了来调试,其实console对象有很多方法,今天针对一些常用的方法进行讲解. 输出带色彩的信息 console.log('消息内容!') ...

  6. JS控制台输出,别只会 console.log 了

    引言 控制台日志输出,别再只会 console.log 了,其实Console 对象还提供了很多方法.比如console.info().console.warn() .console.error()等 ...

  7. 如何超越console.log并充分利用浏览器的调试控制台

    by Gilad Dayagi 通过吉拉德·达亚吉 The console object is a very useful feature of browsers that has been arou ...

  8. 你不知道的console.log

    前言 对于前端开发者,使用console.log() 次数绝对很多,但是大部分人认识的 console 对象还不是很全面,其实深入了解这些后,你会发现给开发过程带来很多便利,而且还很有趣. 先来看看别 ...

  9. js调试console.log使用总结图解

    一 实例 打印字符串和对象: 可展开对象查看内部情况: 看一下console对象本身的定义情况: 输出对象情况: utag对象所在文件: 输出对象: 二 Console.log 总结 1 如果你js没 ...

最新文章

  1. UpdatePanel 后台注册脚本失效
  2. bigdecimal取小数部分_小数精度丢失问题分析和解决
  3. 红米k30pro工程测试代码_3299起?红米K30Pro官宣3.24发 对比米10 追悼会来了?
  4. gentoo 安装mongodb
  5. 为什么这本搜索引擎营销的书畅销呢?
  6. Rayzone2面大旗的官方汉译
  7. c语言指向指针的指针
  8. 记一次在广州看牙医经历
  9. 小组学习电子教室等同屏工具调研
  10. 证件照尺寸怎么修改?这三个好用的方法你知道吗?
  11. 视频教程-微信小程序快速入门视频课程-微信开发
  12. Xtrabackup使用指南 InnoDB数据备份工具
  13. java和易语言对比_国外流行排行榜编程语言和易语言相比较的优势和劣势
  14. 网络攻防-20169213-刘晶-第五周作业
  15. List如何在遍历时删除元素
  16. js使用基础总结(简单封装,事件,foreach 原生js写法)
  17. (30)虚拟时钟create_virtual_clock
  18. 操作系统课程设计----读者-写者 问题(c语言)
  19. 使用GPU加速图片处理的多种方案解析
  20. 量化投资超越市场必须具备哪三个条件

热门文章

  1. LeetCode-Partition List-分割链表-链表操作
  2. Socket网络编程--简单Web服务器(2)
  3. 微软SQL Server数据库的两种请求游标
  4. 使用 TensorFlow 的公司
  5. 到2020年,将有60%的工作被人工智能取代?
  6. 对称密码获取(OJ)
  7. DS1302示例子程序
  8. 不干胶标贴打印模板下载_A4纸打印17*6的不干胶标签打印模板如何设置
  9. deny后加to do还是doing_动词后加to do 和 doing 的 记忆口诀
  10. 047_输出一下byte的所有值