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 相关文章推荐
js 文本滚动效果的实例代码
Aug 17 Javascript
js动态创建标签示例代码
Jun 09 Javascript
angularjs指令中的compile与link函数详解
Dec 06 Javascript
node.js中的fs.createWriteStream方法使用说明
Dec 17 Javascript
JavaScript学习笔记之数组求和方法
Mar 23 Javascript
Angular的$http的ajax的请求操作(推荐)
Jan 10 Javascript
jQuery插件HighCharts绘制的基本折线图效果示例【附demo源码下载】
Mar 07 Javascript
vue 使用ref 让父组件调用子组件的方法
Feb 08 Javascript
JS数组实现分类统计实例代码
Sep 30 Javascript
微信小程序实现元素渐入渐出动画效果封装方法
May 18 Javascript
解决vue项目axios每次请求session不一致的问题
Oct 24 Javascript
前端如何实现动画过渡效果
Feb 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
Windows下的PHP5.0安装配制详解
2006/09/05 PHP
dedecms中显示数字验证码的修改方法
2007/03/21 PHP
PHP中获取变量的变量名的一段代码的bug分析
2011/07/07 PHP
PHP中ID设置自增后不连续的原因分析及解决办法
2016/08/21 PHP
PHP实现微信退款的方法示例
2019/03/26 PHP
Swoole实现异步投递task任务案例详解
2019/04/02 PHP
用函数式编程技术编写优美的 JavaScript_ibm
2008/05/16 Javascript
Mootools 1.2教程(2) DOM选择器
2009/09/14 Javascript
用Jquery实现可编辑表格并用AJAX提交到服务器修改数据
2009/12/27 Javascript
js浮点数保留两位小数点示例代码(四舍五入)
2013/12/26 Javascript
原生javascript 学习之js变量全面了解
2016/07/14 Javascript
解决node.js安装包失败的几种方法
2016/09/02 Javascript
vuejs在解析时出现闪烁的原因及防止闪烁的方法
2016/09/19 Javascript
jquery实现瀑布流效果 jquery下拉加载新数据
2016/12/12 Javascript
WebSocket实现简单客服聊天系统
2017/05/12 Javascript
vue项目如何刷新当前页面的方法
2018/05/18 Javascript
[jQuery] 事件和动画详解
2019/03/05 jQuery
Vue项目路由刷新的实现代码
2019/04/17 Javascript
Vue 解决路由过渡动画抖动问题(实例详解)
2020/01/05 Javascript
python测试驱动开发实例
2014/10/08 Python
python:socket传输大文件示例
2017/01/18 Python
python之django母板页面的使用
2018/07/03 Python
Python基于类路径字符串获取静态属性
2020/03/12 Python
python如何进入交互模式
2020/07/06 Python
matplotlib交互式数据光标mpldatacursor的实现
2021/02/03 Python
django使用多个数据库的方法实例
2021/03/04 Python
CSS3实现可关闭的下拉手风琴菜单效果
2015/08/31 HTML / CSS
CSS3实现王者匹配时的粒子动画效果
2019/04/12 HTML / CSS
FILA斐乐中国官方商城:意大利运动品牌
2017/01/25 全球购物
鞋子女王塔玛拉·梅隆同名奢侈品牌:Tamara Mellon
2017/11/22 全球购物
驾驶员岗位职责
2014/01/29 职场文书
提拔干部考察材料
2014/05/26 职场文书
金融系应届毕业生求职信
2014/05/26 职场文书
节能标语大全
2014/06/21 职场文书
学雷锋宣传标语
2014/06/25 职场文书
毕业酒会致辞
2015/07/29 职场文书