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 相关文章推荐
固定表格行列(expression)在IE下适用
Jul 25 Javascript
谈谈JSON对象和字符串之间的相互转换JSON.stringify(obj)和JSON.parse(string)
Oct 01 Javascript
jQuery实现的导航下拉菜单效果示例
Sep 05 Javascript
细数JavaScript 一个等号,两个等号,三个等号的区别
Oct 09 Javascript
详解本地Node.js服务器作为api服务器的解决办法
Feb 28 Javascript
node.js+captchapng+jsonwebtoken实现登录验证示例
Aug 17 Javascript
vue组件初学_弹射小球(实例讲解)
Sep 06 Javascript
JS实现table表格内针对某列内容进行即时搜索筛选功能
May 11 Javascript
解决vue axios的封装 请求状态的错误提示问题
Sep 25 Javascript
用VueJS写一个Chrome浏览器插件的实现方法
Feb 27 Javascript
微信小程序获取用户信息及手机号(后端TP5.0)
Sep 12 Javascript
原生js实现无缝轮播图效果
Jan 28 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/02/25 PHP
linux命令之调试工具strace的深入分析
2013/06/03 PHP
浅析PHP编程中10个最常见的错误
2014/08/08 PHP
PHP中文编码小技巧
2014/12/25 PHP
十大使用PHP框架的理由
2015/09/26 PHP
非常全面的php日期时间运算汇总
2015/11/04 PHP
Win7环境下Apache连接MySQL提示连接已重置的解决办法
2017/05/09 PHP
PHP 文件写入和读取操作实例详解【必看篇】
2019/11/04 PHP
自动刷新网页,自动刷新当前页面,JS调用
2013/06/24 Javascript
jquery专业的导航菜单特效代码分享
2015/08/29 Javascript
JavaScript6 let 新语法优势介绍
2016/07/15 Javascript
详解XMLHttpRequest(一)同步请求和异步请求
2016/09/14 Javascript
vue component组件使用方法详解
2017/07/14 Javascript
详解vue.js数据传递以及数据分发slot
2018/01/20 Javascript
深入理解Vue父子组件生命周期执行顺序及钩子函数
2018/08/12 Javascript
使用JavaScript实现node.js中的path.join方法
2018/08/12 Javascript
AngularJS与后端php的数据交互方法
2018/08/13 Javascript
vue+axios 前端实现的常用拦截的代码示例
2018/08/23 Javascript
编写一个javascript元循环求值器的方法
2020/04/14 Javascript
Python中获取网页状态码的两个方法
2014/11/03 Python
win10系统中安装scrapy-1.1
2016/07/03 Python
python中print的不换行即时输出的快速解决方法
2016/07/20 Python
Python之文字转图片方法
2018/05/10 Python
Django1.9 加载通过ImageField上传的图片方法
2018/05/25 Python
python读取Excel实例详解
2018/08/17 Python
基于Python3.6中的OpenCV实现图片色彩空间的转换
2020/02/03 Python
Django Admin后台模型列表页面如何添加自定义操作按钮
2020/11/11 Python
关于CSS Tooltips(鼠标经过时显示)的效果
2013/04/10 HTML / CSS
移动端html5模拟长按事件的实现方法
2018/09/30 HTML / CSS
Canvas环形饼图与手势控制的实现代码
2019/11/08 HTML / CSS
网络教育毕业生自我鉴定
2013/10/10 职场文书
校园歌手大赛策划书
2014/01/17 职场文书
四风问题自查报告剖析材料
2014/02/08 职场文书
群众路线教育实践活动对照检查材料
2014/09/22 职场文书
学生乘坐校车安全责任书
2015/05/11 职场文书
Qt数据库应用之实现图片转pdf
2022/06/01 Java/Android