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 中的事件教程
Apr 05 Javascript
Extjs ajax同步请求时post方式参数发送方式
Aug 05 Javascript
jQuery层次选择器选择元素使用介绍
Apr 18 Javascript
jquery实现可自动收缩的TAB网页选项卡代码
Sep 06 Javascript
JavaScript下的时间格式处理函数Date.prototype.format
Jan 27 Javascript
javascript判断图片是否加载完成的方法推荐
May 13 Javascript
JavaScript实现垂直滚动条效果
Jan 18 Javascript
Node.js的特点详解
Feb 03 Javascript
利用node.js实现反向代理的方法详解
Jul 24 Javascript
JavaScript中click和onclick本质区别与用法分析
Jun 07 Javascript
微信小程序实现的日期午别医生排班表功能示例
Jan 09 Javascript
Vue如何基于vue-i18n实现多国语言兼容
Jul 17 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制作简单的内容采集器的代码
2007/11/28 PHP
PHP6 mysql连接方式说明
2009/02/09 PHP
php报表之jpgraph柱状图实例代码
2011/08/22 PHP
php页面防重复提交方法总结
2013/11/25 PHP
PHP 正则判断中文UTF-8或GBK的思路及具体实现
2013/11/26 PHP
PHP下的Oracle客户端扩展(OCI8)安装教程
2014/09/10 PHP
PHP设置进度条的方法
2015/07/08 PHP
PHP添加图片水印、压缩、剪切的封装类
2015/08/17 PHP
PHP 并发场景的几种解决方案
2019/06/14 PHP
js+FSO遍历文件夹下文件并显示
2007/03/07 Javascript
jQuery 1.2.x 升? 1.3.x 注意事项
2009/05/06 Javascript
form表单action提交的js部分与html部分
2014/01/07 Javascript
escape编码与unescape解码汉字出现乱码的解决方法
2014/07/02 Javascript
基于JS实现数字+字母+中文的混合排序方法
2016/06/06 Javascript
JS实现复制内容到剪贴板功能
2017/02/05 Javascript
用file标签实现多图文件上传预览
2017/02/14 Javascript
利用JavaScript在网页实现八数码启发式A*算法动画效果
2017/04/16 Javascript
js实现点击切换checkbox背景图片的简单实例
2017/05/08 Javascript
详解webpack+express多页站点开发
2017/12/22 Javascript
webpack4打包vue前端多页面项目
2018/09/17 Javascript
Python Queue模块详解
2014/11/30 Python
python中scikit-learn机器代码实例
2018/08/05 Python
详解如何用django实现redirect的几种方法总结
2018/11/22 Python
python全局变量引用与修改过程解析
2020/01/07 Python
Python xlrd excel文件操作代码实例
2020/03/10 Python
美国温暖商店:The Warming Store
2018/12/15 全球购物
建筑实习自我鉴定
2013/10/18 职场文书
大学自我评价
2014/02/12 职场文书
教师敬业奉献模范事迹材料
2014/05/18 职场文书
毕业生求职信
2014/06/10 职场文书
法英专业大学生职业生涯规划范文:衡外情,量己力!
2014/09/23 职场文书
软弱涣散基层党组织整改方案
2014/10/25 职场文书
2015年幼儿园新年寄语
2014/12/08 职场文书
英语辞职信怎么写
2015/02/28 职场文书
Python获取百度热搜的完整代码
2021/04/07 Python
MySQL 原理与优化之Update 优化
2022/08/14 MySQL