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 文件的同步加载与异步加载实现原理
Dec 13 Javascript
js中定义一个变量并判断其是否为空的方法
May 13 Javascript
js防止页面被iframe调用的方法
Oct 30 Javascript
JS显示下拉列表框内全部元素的方法
Mar 31 Javascript
bootstrap datetimepicker日期插件使用方法
Jan 13 Javascript
js仿拉勾网首页穿墙广告效果
Mar 08 Javascript
jQuery插件jsonview展示json数据
May 26 jQuery
vue自定义tap指令及tap事件的实现
Sep 18 Javascript
JS/HTML5游戏常用算法之路径搜索算法 A*寻路算法完整实例
Dec 14 Javascript
JS算法题之查找数字在数组中的索引位置
May 15 Javascript
eslint 的三大通用规则详解
May 16 Javascript
微信小程序服务器日期格式化问题
Jan 07 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实现双链表删除与插入节点的方法示例
2017/11/11 PHP
JS动画效果代码3
2008/04/03 Javascript
js window.print实现打印特定控件或内容
2013/09/16 Javascript
JS控制图片等比例缩放的示例代码
2013/12/24 Javascript
jQuery实现3D文字特效的方法
2015/03/10 Javascript
cocos2dx骨骼动画Armature源码剖析(三)
2015/09/08 Javascript
JSONObject使用方法详解
2015/12/17 Javascript
JavaScript数组的定义及数字操作技巧
2016/06/06 Javascript
第一次动手实现bootstrap table分页效果
2016/09/22 Javascript
jquery 标签 隔若干行加空白或者加虚线的方法
2016/12/07 Javascript
详解使用angular-cli发布i18n多国语言Angular应用
2017/05/20 Javascript
详解nodejs通过响应回写的方式渲染页面资源
2018/04/07 NodeJs
Vue手把手教你撸一个 beforeEnter 钩子函数
2018/04/24 Javascript
vue 实现强制类型转换 数字类型转为字符串
2019/11/07 Javascript
vuex存储token示例
2019/11/11 Javascript
[19:24]DOTA2客户端使用指南 一分钟快速设置轻松超神
2013/09/24 DOTA
[13:38]2015国际邀请赛中国战队出征仪式
2015/05/29 DOTA
初学Python实用技巧两则
2014/08/29 Python
windows下安装python的C扩展编译环境(解决Unable to find vcvarsall.bat)
2018/02/21 Python
pyqt5的QWebEngineView 使用模板的方法
2018/08/18 Python
python 搭建简单的http server,可直接post文件的实例
2019/01/03 Python
python的pstuil模块使用方法总结
2019/07/26 Python
python下载卫星云图合成gif的方法示例
2020/02/18 Python
基于html和CSS3制作酷炫的导航栏
2015/09/23 HTML / CSS
Agoda.com官方网站:便宜预订全球酒店,高达80%的折扣
2018/04/04 全球购物
树转促学习心得体会
2014/09/10 职场文书
2014教师党员个人自我评议
2014/09/20 职场文书
学校运动会报道稿
2014/09/23 职场文书
派出所班子党的群众路线对照检查材料思想汇报
2014/10/01 职场文书
银行业务授权委托书
2014/10/10 职场文书
2015年幼儿园元旦游艺活动策划书
2014/12/09 职场文书
听证通知书
2015/04/24 职场文书
python爬取豆瓣电影TOP250数据
2021/05/23 Python
简单了解 MySQL 中相关的锁
2021/05/25 MySQL
php 文件上传至OSS及删除远程阿里云OSS文件
2021/07/04 PHP
MySQL派生表联表查询实战过程
2022/03/20 MySQL