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 dialog键盘事件代码
Aug 01 Javascript
基于jQuery实现表格数据的动态添加与统计的代码
Jan 31 Javascript
深入理解JS中的变量及作用域、undefined与null
Mar 04 Javascript
原生JS和jQuery版实现文件上传功能
Apr 18 Javascript
JS原型链怎么理解
Jun 27 Javascript
javascript比较语义化版本号的实现代码
Sep 09 Javascript
快速实现JS图片懒加载(可视区域加载)示例代码
Jan 04 Javascript
如何用js判断dom是否有存在某class的值
Feb 13 Javascript
iconfont的三种使用方式详解
Aug 05 Javascript
vue props传值失败 输出undefined的解决方法
Sep 11 Javascript
跟混乱的页面弹窗说再见
Apr 11 Javascript
JS前端轻量fabric.js系列物体基类
Aug 05 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 json_encode奇怪问题说明
2011/09/27 PHP
php cli 小技巧
2013/06/03 PHP
PHP常用工具类大全附全部代码下载
2015/12/07 PHP
php加密之discuz内容经典加密方式实例详解
2017/02/04 PHP
PHP实现的简单路由和类自动加载功能
2018/03/13 PHP
javascript Array数组对象的扩展函数代码
2010/05/22 Javascript
Jquery从头学起第四讲 jquery入门教程
2010/08/01 Javascript
JavaScript新窗口与子窗口传值详解
2014/02/11 Javascript
jQuery 过滤方法filter()选择具有特殊属性的元素
2014/06/15 Javascript
基于Bootstrap+jQuery.validate实现Form表单验证
2014/12/16 Javascript
JavaScript获取网页、浏览器、屏幕高度和宽度汇总
2014/12/18 Javascript
D3.js实现散点图和气泡图的方法详解
2016/09/21 Javascript
js html5 css俄罗斯方块游戏再现
2016/10/17 Javascript
bootstrap输入框组件使用方法详解
2017/01/19 Javascript
基于Cookie常用操作以及属性介绍
2017/09/07 Javascript
js 原生判断内容区域是否滚动到底部的实例代码
2017/11/15 Javascript
JS常见构造模式实例对比分析
2018/08/27 Javascript
JavaScript数据结构之栈实例用法
2019/01/18 Javascript
ES6 Iterator接口和for...of循环用法分析
2019/07/31 Javascript
JS数组的高级使用方法示例小结
2020/03/14 Javascript
ES6对象操作实例详解
2020/05/23 Javascript
javascript实现雪花飘落效果
2020/08/19 Javascript
Python编程之Re模块下的函数介绍
2017/10/28 Python
对Python实现累加函数的方法详解
2019/01/23 Python
树莓派使用USB摄像头和motion实现监控
2019/06/22 Python
python实现两个dict合并与计算操作示例
2019/07/01 Python
Python3.7下安装pyqt5的方法步骤(图文)
2020/05/12 Python
python小白学习包管理器pip安装
2020/06/09 Python
keras实现基于孪生网络的图片相似度计算方式
2020/06/11 Python
华润集团网上药店:健一网
2016/09/19 全球购物
应届本科生推荐信范文
2013/12/25 职场文书
公司新员工的演讲稿注意事项
2014/01/01 职场文书
2014报到证办理个人委托书
2014/10/08 职场文书
2015年幼儿园卫生保健工作总结
2015/05/12 职场文书
幼儿园音乐教学反思
2016/02/18 职场文书
postgreSQL数据库基础知识介绍
2022/04/12 PostgreSQL