Node.js中防止错误导致的进程阻塞的方法


Posted in Javascript onAugust 11, 2016

在Node.js中,当某个回调函数发生了错误,整个进程都会崩溃,影响后面的代码执行。

Node.js这样处理,是因为在发生未被捕获的错误时,进程的状态就不确定。之后也就无法正常工作了。如果错误始终不处理的话,就回一直抛出意料之外的错误,这样不利于调试。

防止错误导致的进程阻塞的方法主要有如下两种:

一. try-catch

try-catch允许进行异常捕获,并让代码继续执行下去:

例如:

当函数抛出错误时,代码就停止执行了:

(function() {
var a = 0;
a();
console.log("get here."); // 不执行
})();

使用try-catch进行错误处理后,代码仍可继续执行:

(function() {
var a = 0;
try {
a();
} catch (e) {
console.log(e);
}
console.log("get here."); // get here.
})();

try-catch不能捕获未来执行函数错误

要捕获未来才执行到的函数所抛出的错误时不可能的。这会直接抛出未捕获的异常,并且catch代码块永远都不会被执行:

try {
setTimeout(function() {
throw new Error("here");
}, 10);
} catch(e) {
console.log(e);
}

这就是为什么在Node.js中,每步豆芽正确进行错误处理的原因。

添加uncatchException处理器

若添加了 uncatchException 处理器,当函数抛出错误时,进程也不会退出。

process.on("uncatchException", function(e) {
console.log(e);
process.exit(1);
});

以上所述是小编给大家介绍的Node.js中防止错误导致的进程阻塞的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
基于jquery的一个拖拽到指定区域内的效果
Sep 21 Javascript
js中更短的 Array 类型转换
Oct 30 Javascript
js自定义方法通过隐藏iframe实现文件下载
Feb 21 Javascript
Jquery Ajax Error 调试错误的技巧
Nov 20 Javascript
很全面的JavaScript常用功能汇总集合
Jan 22 Javascript
JavaScript随机打乱数组顺序之随机洗牌算法
Aug 02 Javascript
JavaScript之Date_动力节点Java学院整理
Jun 28 Javascript
js 获取元素的具体样式信息getcss(实例讲解)
Jul 05 Javascript
深入探究node之Transform
Jul 20 Javascript
详解mpvue中使用vant时需要注意的onChange事件的坑
May 16 Javascript
微信小程序转发事件实现解析
Oct 22 Javascript
node.js中npm包管理工具用法分析
Feb 14 Javascript
浅谈js中对象的使用
Aug 11 #Javascript
js倒计时简单实现代码
Aug 11 #Javascript
原生态js,鼠标按下后,经过了那些单元格的简单实例
Aug 11 #Javascript
vue分页组件table-pagebar使用实例解析
Nov 15 #Javascript
使用BootStrap实现用户登录界面UI
Aug 10 #Javascript
基于JSON格式数据的简单jQuery幻灯片插件(jquery-slider)
Aug 10 #Javascript
BootStrap Typeahead自动补全插件实例代码
Aug 10 #Javascript
You might like
Terran剧情介绍
2020/03/14 星际争霸
用Flash图形化数据(一)
2006/10/09 PHP
php is_file 判断给定文件名是否为一个正常的文件
2010/05/10 PHP
THinkPHP获取客户端IP与IP地址查询的方法
2016/11/14 PHP
JS 遮照层实现代码
2010/03/31 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(一)让静态人物动起来
2013/01/23 Javascript
jquery鼠标停止移动事件
2013/12/21 Javascript
js动态移动滚动条至底部示例代码
2014/04/24 Javascript
jQuery实现左右切换焦点图
2015/04/03 Javascript
jQuery ui autocomplete选择列表被Bootstrap模态窗遮挡的完美解决方法
2016/09/23 Javascript
JavaScript定义全局对象的方法示例
2017/01/12 Javascript
vue父子组件的数据传递示例
2017/03/07 Javascript
layui实现checkbox的目录树tree的例子
2019/09/12 Javascript
JS中FileReader类实现文件上传及时预览功能
2020/03/27 Javascript
[01:01:43]EG vs VP 2018国际邀请赛淘汰赛BO3 第二场 8.24
2018/08/25 DOTA
[03:17]DOTA2-DPC中国联赛1月29日Recap集锦
2021/03/11 DOTA
python使用自定义user-agent抓取网页的方法
2015/04/15 Python
详解Python中类的定义与使用
2017/04/11 Python
Python数据分析之如何利用pandas查询数据示例代码
2017/09/01 Python
Python基础练习之用户登录实现代码分享
2017/11/08 Python
django限制匿名用户访问及重定向的方法实例
2018/02/07 Python
Python重新加载模块的实现方法
2018/10/16 Python
解决pycharm下os.system执行命令返回有中文乱码的问题
2019/07/07 Python
详解python实现小波变换的一个简单例子
2019/07/18 Python
Python 实现遥感影像波段组合的示例代码
2019/08/04 Python
Python学习笔记之列表推导式实例分析
2019/08/13 Python
如何使用repr调试python程序
2020/02/28 Python
Python函数递归调用实现原理实例解析
2020/08/11 Python
摩顿布朗英国官方网上商店:奢华沐浴、身体和头发护理
2016/10/29 全球购物
天猫国际进口超市直营:官方直采,一站购齐
2017/12/11 全球购物
Book Depository亚太地区:一家领先的国际图书零售商
2019/05/05 全球购物
远程网络教育毕业生自我鉴定
2014/04/14 职场文书
自主招生自荐信格式
2015/03/04 职场文书
刑事上诉状(量刑过重)
2015/05/23 职场文书
《童年的发现》教学反思
2016/02/18 职场文书
上帝为你开了一扇窗之Tkinter常用函数详解
2021/06/02 Python