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 读取XML数据,在页面中展现、编辑、保存的实现
Oct 27 Javascript
function foo的原型与prototype属性解惑
Nov 19 Javascript
解析Jquery中如何把一段html代码动态写入到DIV中(实例说明)
Jul 09 Javascript
IE下JS读取xml文件示例代码
Aug 05 Javascript
jQuery实现鼠标经过提示信息的地图热点效果
Apr 26 Javascript
跟我学习javascript的prototype,getPrototypeOf和__proto__
Nov 17 Javascript
JavaScript微信定位功能实现方法
Nov 29 Javascript
深入浅析JavaScript中的RegExp对象
Sep 18 Javascript
详解Angular-ui-BootStrap组件的解释以及使用
Jul 13 Javascript
如何在JavaScript中谨慎使用代码注释
Jun 21 Javascript
基于vue实现圆形菜单栏组件
Jul 05 Javascript
JavaScript实现身份证验证代码实例
Aug 26 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学习之数据类型之间的转换代码
2011/05/29 PHP
ThinkPHP简单使用memcache缓存的方法
2016/11/15 PHP
PHPMailer发送邮件
2016/12/28 PHP
php识别翻转iphone拍摄的颠倒图片
2018/05/17 PHP
php统计数组不同元素的个数的实例方法
2019/09/26 PHP
jQuery Select(单选) 模拟插件 V1.3.62 改进版
2010/07/17 Javascript
javascript 折半查找字符在数组中的位置(有序列表)
2010/12/09 Javascript
Javascript公共脚本库系列(一): 弹出层脚本
2011/02/24 Javascript
select标记美化--JS式插件、后期加载
2013/04/01 Javascript
jQuery 回调函数(callback)的使用和基础
2015/02/26 Javascript
js计算德州扑克牌面值的方法
2015/03/04 Javascript
jQuery实现表格颜色交替显示的方法
2015/03/09 Javascript
JS实现仿google、百度搜索框输入信息智能提示的实现方法
2015/04/20 Javascript
JavaScript jquery及AJAX小结
2016/01/24 Javascript
jQuery.form插件的使用及跨域异步上传文件
2016/04/27 Javascript
微信小程序 Windows2008 R2服务器配置TLS1.2方法
2016/12/05 Javascript
Bootstrap select实现下拉框多选效果
2016/12/23 Javascript
微信小程序 this和that详解及简单实例
2017/02/13 Javascript
微信JS-SDK选取手机照片上传功能
2017/04/21 Javascript
bootstrap3-dialog-master模态框使用详解
2017/08/22 Javascript
vue组件间通信子与父详解(二)
2017/11/07 Javascript
微信小程序scroll-view实现字幕滚动
2018/07/14 Javascript
jQuery中使用validate插件校验表单功能
2019/05/24 jQuery
利用Python如何生成随机密码
2016/04/20 Python
Python BS4库的安装与使用详解
2018/08/08 Python
Python二维数组实现求出3*3矩阵对角线元素的和示例
2019/11/29 Python
快速了解Python开发环境Spyder
2020/06/29 Python
python解释器安装教程的方法步骤
2020/07/02 Python
opencv+pyQt5实现图片阈值编辑器/寻色块阈值利器
2020/11/13 Python
HTML5 虚拟键盘出现挡住输入框的解决办法
2017/02/14 HTML / CSS
Tomcat中怎么使用log4j输出所有的log
2016/07/07 面试题
七年级音乐教学反思
2014/01/26 职场文书
中药专业毕业自荐书范文
2014/02/08 职场文书
大二法英学生职业生涯规划范文
2014/02/27 职场文书
安全资料员岗位职责范本
2014/06/28 职场文书
Golang全局变量加锁的问题解决
2021/05/08 Golang