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 相关文章推荐
JavaScript Prototype对象
Jan 07 Javascript
潜说js对象和数组
May 25 Javascript
jquery formValidator插件ajax验证 内容不做任何修改再离开提示错误的bug解决方法
Jan 04 Javascript
页面实时更新时间的JS实例代码
Dec 18 Javascript
基于ajax实现文件上传并显示进度条
Aug 03 Javascript
深入探讨前端框架react
Dec 09 Javascript
javascript每日必学之继承
Feb 23 Javascript
JavaScript正则表达式匹配 div  style标签
Mar 15 Javascript
深入浅析Vue中的slots/scoped slots
Apr 03 Javascript
jQuery实现的点击标题文字切换字体效果示例【测试可用】
Apr 26 jQuery
layui 实现自动选择radio单选框(checked)的方法
Sep 03 Javascript
前端开发之便利店收银系统代码
Dec 27 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
用PHP做了一个领取优惠券活动的示例代码
2019/07/05 PHP
php根据地址获取百度地图经纬度的实例方法
2019/09/03 PHP
JS关键字变色实现思路及代码
2013/02/21 Javascript
$.each遍历对象、数组的属性值并进行处理
2014/07/18 Javascript
JavaScript显示当前文档最后修改日期的方法
2015/03/19 Javascript
jQuery实现首页顶部可伸缩广告特效代码
2015/04/15 Javascript
js实现当复选框选择匿名登录时隐藏登录框效果
2015/08/14 Javascript
标准的js无缝滚动效果
2016/08/30 Javascript
Vue2.0使用过程常见的一些问题总结学习
2017/04/10 Javascript
JS简单获取日期相差天数的方法
2017/04/24 Javascript
使用JS监听键盘按下事件(keydown event)
2019/11/07 Javascript
JavaScript实现简单进度条效果
2020/03/25 Javascript
微信小程序订阅消息(java后端实现)开发
2020/06/01 Javascript
pandas求两个表格不相交的集合方法
2018/12/08 Python
解决django前后端分离csrf验证的问题
2019/02/03 Python
利用pyuic5将ui文件转换为py文件的方法
2019/06/19 Python
python3.6+django2.0+mysql搭建网站过程详解
2019/07/24 Python
使用WingPro 7 设置Python路径的方法
2019/07/24 Python
深入了解Python在HDA中的应用
2019/09/05 Python
pymongo insert_many 批量插入的实例
2020/12/05 Python
Python Spyder 调出缩进对齐线的操作
2021/02/26 Python
CSS3教程(2):网页边框半径和网页圆角
2009/04/02 HTML / CSS
html5 input输入实时检测以及延时优化
2018/07/18 HTML / CSS
Marc Jacobs彩妆官网:Marc Jacobs Beauty
2017/07/03 全球购物
开发中都用到了那些设计模式?用在什么场合?
2014/08/21 面试题
Linux操作面试题
2015/02/11 面试题
经贸日语毕业生自荐信
2013/11/03 职场文书
思想汇报范文
2013/11/04 职场文书
开工仪式主持词
2014/03/20 职场文书
法人授权委托书范本
2014/04/04 职场文书
土建工程师岗位职责
2014/06/10 职场文书
企业标语大全
2014/07/01 职场文书
幼儿园小班个人工作总结
2015/02/12 职场文书
简历自荐信范文
2015/03/09 职场文书
springboot临时文件存储目录配置方式
2021/07/01 Java/Android
html中两种获取标签内的值的方法
2022/06/10 HTML / CSS