您现在的位置是:首页 > Javascript
当前栏目
错误传播
2023-02-18 15:29:02 时间
如果代码发生了错误,又没有被try ... catch捕获,那么,程序执行流程会跳转到哪呢?
function getLength(s) {
return s.length;
}
function printLength() {
console.log(getLength('abc')); // 3
console.log(getLength(null)); // Error!
}
printLength();
如果在一个函数内部发生了错误,它自身没有捕获,错误就会被抛到外层调用函数,如果外层函数也没有捕获,该错误会一直沿着函数调用链向上抛出,直到被JavaScript引擎捕获,代码终止执行。
所以,我们不必在每一个函数内部捕获错误,只需要在合适的地方来个统一捕获,一网打尽:
'use strict';
----
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);
----
// 直接运行,观察控制台输出
当bar()
函数传入参数null
时,代码会报错,错误会向上抛给调用方foo()
函数,foo()
函数没有try ... catch语句,所以错误继续向上抛给调用方main()
函数,main()
函数有try ... catch语句,所以错误最终在main()
函数被处理了。
至于在哪些地方捕获错误比较合适,需要视情况而定。
相关文章
- 论文解读(node2vec)《node2vec Scalable Feature Learning for Networks》
- 一起手写JS函数的call、apply、bind
- 记录下最近开发中fastjson的坑-fastjson出现json解析异常
- JSON语法格式
- iOS小技能:WKWebView与JS的交互
- java小技能:JWT(json web token)认证实现
- 请你说一说Java 和 JavaScript的区别?
- requests.post 方法 json 和 data 参数的区别
- JS算法之动态规划
- JS_基础知识点精讲
- JS_手写实现
- JS算法_知识点精讲
- .NET7 gRPC JSON转码+OpenAPI
- 一门看懂Node处理CPU密集型任务的方法有哪些
- 使用Node构建一个高效的静态文件服务器
- 一文带你看懂Node的Buffer类
- JavaScript刷LeetCode拿offer-高频40题
- 用javascript分类刷leetcode--位运算(图文视频讲解)
- JavaScript刷LeetCode拿offer之失败-滑动窗口
- 用javascript分类刷leetcode---动态规划(图文视频讲解)