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 相关文章推荐
JS/jQuery实现默认显示部分文字点击按钮显示全部内容
May 13 Javascript
jquery按回车提交数据的代码示例
Nov 05 Javascript
js清除input中type等于file的值域(示例代码)
Dec 24 Javascript
JavaScript排序算法之希尔排序的2个实例
Apr 04 Javascript
JavaScript修改浏览器tab标题小技巧
Jan 06 Javascript
Web表单提交之disabled问题js解决方法
Jan 13 Javascript
详解JavaScript语言的基本语法要求
Nov 20 Javascript
JavaScript之iterable_动力节点Java学院整理
Jun 29 Javascript
微信小程序使用image组件显示图片的方法【附源码下载】
Dec 08 Javascript
vue.js使用v-pre与v-html输出HTML操作示例
Jul 07 Javascript
详解html-webpack-plugin插件(用法总结)
Sep 12 Javascript
微信小程序在线客服自动回复功能(基于node)
Jul 03 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实现将HTML页面转换成word并且保存的方法
2016/10/14 PHP
php解压缩zip和rar压缩包文件的方法
2019/07/10 PHP
详解no input file specified 三种解决方法
2019/11/29 PHP
JavaScript类和继承 constructor属性
2010/03/04 Javascript
jquery.jstree 增加节点的双击事件代码
2010/07/27 Javascript
validator验证控件使用代码
2010/11/23 Javascript
js确认删除对话框效果的示例代码
2014/02/20 Javascript
Javascript 完美运动框架(逐行分析代码,让你轻松了运动的原理)
2015/01/23 Javascript
JavaScript中的toLocaleDateString()方法使用简介
2015/06/12 Javascript
JavaScript转换与解析JSON方法实例详解
2015/11/24 Javascript
javascript中获取class的简单实现
2016/07/12 Javascript
JS实现最简单的冒泡排序算法
2017/02/15 Javascript
基于Vue2.0的分页组件
2017/03/16 Javascript
微信小程序 地图map实例详解
2017/06/07 Javascript
利用vue + koa2 + mockjs模拟数据的方法教程
2017/11/22 Javascript
Vue中使用clipboard实现复制功能
2018/09/05 Javascript
JS中使用new Option()实现时间联动效果
2018/12/10 Javascript
jquery的$().each和$.each的区别
2019/01/18 jQuery
[40:16]TFT vs Mski Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
python实现的jpg格式图片修复代码
2015/04/21 Python
python机器学习实战之最近邻kNN分类器
2017/12/20 Python
Python Xml文件添加字节属性的方法
2018/03/31 Python
TensorFlow的权值更新方法
2018/06/14 Python
python的内存管理和垃圾回收机制详解
2019/05/18 Python
Python实现串口通信(pyserial)过程解析
2019/09/25 Python
解决Opencv+Python cv2.imshow闪退问题
2020/04/24 Python
python 利用panda 实现列联表(交叉表)
2021/02/06 Python
x-ua-compatible content=”IE=7, IE=9″意思理解
2013/07/22 HTML / CSS
使用PDF.JS插件在HTML中预览PDF文件的方法
2018/08/29 HTML / CSS
如何写出好的Java代码
2014/04/25 面试题
护理专业推荐信
2013/11/07 职场文书
优秀辅导员事迹材料
2014/02/16 职场文书
个人充满哲理的自我评价
2014/02/20 职场文书
普通党员整改措施
2014/10/24 职场文书
高中生毕业评语
2014/12/30 职场文书
每日六道java新手入门面试题,通往自由的道路
2021/06/30 Java/Android