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的text()方法用法分析
Dec 20 Javascript
jQuery+ajax中getJSON() 用法实例
Dec 22 Javascript
jQuery实现DIV层淡入淡出拖动特效的方法
Feb 13 Javascript
jQuery统计指定子元素数量的方法
Mar 17 Javascript
js实现非常简单的焦点图切换特效实例
May 07 Javascript
移动端使用localStorage缓存Js和css文的方法(web开发)
Sep 20 Javascript
关于vue.js组件数据流的问题
Jul 26 Javascript
移动端触摸滑动插件swiper使用方法详解
Aug 11 Javascript
JS实现点击复选框变更DIV显示状态的示例代码
Dec 18 Javascript
基于Vue2x实现响应式自适应轮播组件插件VueSliderShow功能
May 16 Javascript
vue视频播放暂停代码
Nov 08 Javascript
vue-路由精讲 二级路由和三级路由的作用
Aug 06 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学习笔记之字符串编码的转换和判断
2014/05/22 PHP
PHP获取某个月最大天数(最后一天)的方法
2015/07/29 PHP
thinkPHP5.0框架安装教程
2017/03/25 PHP
PHP实现爬虫爬取图片代码实例
2021/03/03 PHP
用javascript做拖动布局的思路
2008/05/31 Javascript
js文字滚动停顿效果代码
2008/06/28 Javascript
js调试工具 Javascript Debug Toolkit 2.0.0版本发布
2008/12/02 Javascript
JavaScript 设计模式学习 Singleton
2009/07/27 Javascript
Jquery中删除元素的实现代码
2011/12/29 Javascript
利用webqq协议使用python登录qq发消息源码参考
2013/04/08 Javascript
JavaScript中的全局对象介绍
2015/01/01 Javascript
Javascript中实现trim()函数的两种方法
2015/02/04 Javascript
jQuery实现仿淘宝带有指示条的图片转动切换效果完整实例
2015/03/04 Javascript
Bootstrap3使用typeahead插件实现自动补全功能
2016/07/07 Javascript
jQuery实现标签页效果实战(4)
2017/02/08 Javascript
详解Vue使用 vue-cli 搭建项目
2017/04/20 Javascript
原生js实现密码输入框值的显示隐藏
2017/07/17 Javascript
Node.js安装详细步骤教程(Windows版)详解
2019/09/01 Javascript
vue 实现动态路由的方法
2020/07/06 Javascript
python迭代器实例简析
2014/09/25 Python
Python爬取数据保存为Json格式的代码示例
2019/04/09 Python
Pandas0.25来了千万别错过这10大好用的新功能
2019/08/07 Python
使用PyTorch将文件夹下的图片分为训练集和验证集实例
2020/01/08 Python
Python如何向SQLServer存储二进制图片
2020/06/08 Python
python基于Kivy写一个图形桌面时钟程序
2021/01/28 Python
Python实现区域填充的示例代码
2021/02/03 Python
HTML5 用动画的表现形式装载图像
2016/03/08 HTML / CSS
HTML5在a标签内放置块级元素示例代码
2013/08/23 HTML / CSS
Watch Station官方网站:世界一流的手表和智能手表
2020/01/05 全球购物
初中科学教学反思
2014/01/21 职场文书
2014年十一国庆向国旗敬礼寄语
2014/04/11 职场文书
小学生个人先进事迹材料
2014/05/08 职场文书
出国签证在职证明
2014/09/20 职场文书
研究生毕业论文导师评语
2014/12/31 职场文书
开票员岗位职责
2015/02/12 职场文书
MySQL学习总结-基础架构概述
2021/04/05 MySQL