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 1.5中使用deferred对象的代码(翻译)
Mar 10 Javascript
十个迅速提升JQuery性能让你的JQuery跑得更快
Dec 10 Javascript
javascript快速排序算法详解
Sep 17 Javascript
Node.js的特点和应用场景介绍
Nov 04 Javascript
如何让你的Lightbox支持滚轮缩放及Base64图片
Dec 04 Javascript
谈一谈jQuery核心架构设计
Mar 28 Javascript
浅谈addEventListener和attachEvent的区别
Jul 14 Javascript
jQuery多级联动下拉插件chained用法示例
Aug 20 Javascript
微信小程序保存图片到相册权限设置
Apr 09 Javascript
js事件机制----捕获与冒泡机制实例分析
May 22 Javascript
详解用js代码触发dom事件的实现方案
Jun 10 Javascript
小程序自定义轮播图圆点组件
Jun 25 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面向对象全攻略 (六)__set() __get() __isset() __unset()的用法
2009/09/30 PHP
兼容性最强的PHP生成缩略图的函数代码(修改版)
2011/01/18 PHP
Nginx下配置codeigniter框架方法
2015/04/07 PHP
CodeIgniter框架常见用法工作总结
2017/03/16 PHP
php格式文件打开的四种方法
2018/02/24 PHP
jQuery 相关控件的事件操作分解
2009/08/03 Javascript
Dom 结点创建 基础知识
2011/10/01 Javascript
你需要知道的10个最佳javascript开发实践小结
2012/04/15 Javascript
JQuery的read函数与js的onload不同方式实现
2013/03/18 Javascript
JS去除空格和换行的正则表达式(推荐)
2016/06/14 Javascript
详解微信小程序——自定义圆形进度条
2016/12/29 Javascript
微信小程序 视图容器组件的详解及实例代码
2017/01/19 Javascript
jQuery简易时光轴实现方法示例
2017/03/13 Javascript
Angular 4 指令快速入门教程
2017/06/07 Javascript
手把手教你搭建ES6的开发运行环境
2017/07/11 Javascript
基于Bootstrap table组件实现多层表头的实例代码
2017/09/07 Javascript
js使用xml数据载体实现城市省份二级联动效果
2017/11/08 Javascript
vue多页面开发和打包正确处理方法
2018/04/20 Javascript
vuex实现像调用模板方法一样调用Mutations方法
2019/11/06 Javascript
详解JavaScript作用域 闭包
2020/07/29 Javascript
vue项目里面引用svg文件并给svg里面的元素赋值
2020/08/17 Javascript
解决elementui表格操作列自适应列宽
2020/12/28 Javascript
python基础练习之几个简单的游戏
2017/11/10 Python
Python SELENIUM上传文件或图片实现过程
2019/10/28 Python
Python socket模块方法实现详解
2019/11/05 Python
Flask模板引擎Jinja2使用实例
2020/04/23 Python
浅谈keras中的目标函数和优化函数MSE用法
2020/06/10 Python
Python基于pyjnius库实现访问java类
2020/07/31 Python
Python之Sklearn使用入门教程
2021/02/19 Python
CSS3系列之3D制作方法案例
2017/08/14 HTML / CSS
Weblogic和WebSphere不同特点
2012/05/09 面试题
原料仓管员岗位职责
2014/04/12 职场文书
机关作风整顿个人整改措施2014
2014/09/17 职场文书
买房协议书范本
2014/10/23 职场文书
高中历史教学反思
2016/02/19 职场文书
Python基于Opencv识别两张相似图片
2021/04/25 Python