错误传播 --try{}catch(e){console.log(e)}
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)}相关推荐
- android浏览器400错误代码,console.log在谷歌浏览器和Android浏览器的本地代码错误...
即时通讯使用以下功能来显示数据后,用户点击注册button.This工程完美罚款Mozilla Firefox,但给谷歌浏览器和Android浏览器本地代码错误,IM错了?console.log在谷歌 ...
- js重写console.log函数
重写console.log函数 在前端开发中console.log是我们必不可少的调试工具,但是原生的console.log有两点不能很好地满足我们的需求 开发时需要log,但是上线时希望去掉log, ...
- JavaScript console.log导致错误:“不赞成在主线程上使用同步XMLHttpRequest…”
本文翻译自:JavaScript console.log causes error: "Synchronous XMLHttpRequest on the main thread is de ...
- js 系统教程-15-js 语法之命令行-console.log,console.info,console.error,console.warn,debugger
目录 目录 console 对象与控制台 console console 对象的静态方法 格式占位符 console.warn(),console.error() console.table() co ...
- js技巧 console.log使用
很多时候,我们就用到console.log()来输入一个信息,用了来调试,其实console对象有很多方法,今天针对一些常用的方法进行讲解. 输出带色彩的信息 console.log('消息内容!') ...
- JS控制台输出,别只会 console.log 了
引言 控制台日志输出,别再只会 console.log 了,其实Console 对象还提供了很多方法.比如console.info().console.warn() .console.error()等 ...
- 如何超越console.log并充分利用浏览器的调试控制台
by Gilad Dayagi 通过吉拉德·达亚吉 The console object is a very useful feature of browsers that has been arou ...
- 你不知道的console.log
前言 对于前端开发者,使用console.log() 次数绝对很多,但是大部分人认识的 console 对象还不是很全面,其实深入了解这些后,你会发现给开发过程带来很多便利,而且还很有趣. 先来看看别 ...
- js调试console.log使用总结图解
一 实例 打印字符串和对象: 可展开对象查看内部情况: 看一下console对象本身的定义情况: 输出对象情况: utag对象所在文件: 输出对象: 二 Console.log 总结 1 如果你js没 ...
最新文章
- UpdatePanel 后台注册脚本失效
- bigdecimal取小数部分_小数精度丢失问题分析和解决
- 红米k30pro工程测试代码_3299起?红米K30Pro官宣3.24发 对比米10 追悼会来了?
- gentoo 安装mongodb
- 为什么这本搜索引擎营销的书畅销呢?
- Rayzone2面大旗的官方汉译
- c语言指向指针的指针
- 记一次在广州看牙医经历
- 小组学习电子教室等同屏工具调研
- 证件照尺寸怎么修改?这三个好用的方法你知道吗?
- 视频教程-微信小程序快速入门视频课程-微信开发
- Xtrabackup使用指南 InnoDB数据备份工具
- java和易语言对比_国外流行排行榜编程语言和易语言相比较的优势和劣势
- 网络攻防-20169213-刘晶-第五周作业
- List如何在遍历时删除元素
- js使用基础总结(简单封装,事件,foreach 原生js写法)
- (30)虚拟时钟create_virtual_clock
- 操作系统课程设计----读者-写者 问题(c语言)
- 使用GPU加速图片处理的多种方案解析
- 量化投资超越市场必须具备哪三个条件