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学习笔记1 数据类型
Jan 11 Javascript
autoPlay 基于jquery的图片自动播放效果
Dec 07 Javascript
js 验证身份证信息有效性
Mar 28 Javascript
基于jQuery倒计时插件实现团购秒杀效果
May 13 Javascript
js添加事件的通用方法推荐
May 15 Javascript
ionic实现可滑动的tab选项卡切换效果
Apr 15 Javascript
谈谈VUE种methods watch和compute的区别和联系
Aug 01 Javascript
JavaScript 中使用 Generator的方法
Dec 29 Javascript
微信小程序之多文件下载的简单封装示例
Jan 29 Javascript
Node.js中package.json中库的版本号(~和^)
Apr 02 Javascript
vue实现登录拦截
Jun 29 Javascript
JavaScript中的函数式编程详解
Aug 22 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 ADODB使用方法集锦
2008/03/25 PHP
PHP中将网页导出为Word文档的代码
2012/05/25 PHP
克隆一个新项目的快捷方式
2013/04/10 PHP
Yii中CGridView禁止列排序的设置方法
2016/07/12 PHP
Yii实现Command任务处理的方法详解
2016/07/14 PHP
PHP实现微信模拟登陆并给用户发送消息的方法【文字,图片,图文】
2017/06/29 PHP
PHP5.6.8连接SQL Server 2008 R2数据库常用技巧分析总结
2019/05/06 PHP
Jquery AJAX 用于计算点击率(统计)
2010/06/30 Javascript
jQuery UI的Dialog无法提交问题的解决方法
2011/01/11 Javascript
一个可拖拽列宽表格实例演示
2012/11/26 Javascript
返回页面顶部top按钮通过锚点实现(自写)
2013/08/30 Javascript
JS获取IP、MAC和主机名的五种方法
2013/11/14 Javascript
jquery实现省市select下拉框的替换(示例代码)
2014/02/22 Javascript
使用jQuery加载html页面到指定的div实现方法
2016/07/13 Javascript
浅谈js中startsWith 函数不能在任何浏览器兼容的问题
2017/03/01 Javascript
bootstrap3 dialog 更强大、更灵活的模态框
2017/04/20 Javascript
vue中使用cookies和crypto-js实现记住密码和加密的方法
2018/10/18 Javascript
微信小程序调用微信支付接口的实现方法
2019/04/29 Javascript
VUE实现密码验证与提示功能
2019/10/18 Javascript
微信小程序开发中var that =this的用法详解
2020/01/18 Javascript
vue 使用 canvas 实现手写电子签名
2020/03/06 Javascript
微信小程序开发打开另一个小程序的实现方法
2020/05/17 Javascript
[01:21:36]CHAOS vs Alliacne 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
python在windows下创建隐藏窗口子进程的方法
2015/06/04 Python
Python的bit_length函数来二进制的位数方法
2019/08/27 Python
阿里云ECS服务器部署django的方法
2019/08/29 Python
Python sorted排序方法如何实现
2020/03/31 Python
用html5的canvas画布绘制贝塞尔曲线完整代码
2013/08/14 HTML / CSS
室内设计专业个人的自我评价
2013/12/18 职场文书
周年庆典邀请函范文
2014/01/24 职场文书
质量在我心中演讲稿
2014/09/02 职场文书
村干部四风问题整改措施
2014/09/30 职场文书
党的群众路线批评与自我批评范文
2014/10/16 职场文书
营运督导岗位职责
2015/04/10 职场文书
研究生毕业登记表的自我鉴定范文
2019/07/15 职场文书
Python中re模块的元字符使用小结
2022/04/07 Python