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 实现表格颜色交替变化鼠标移过颜色变化实例
Aug 28 Javascript
javascript初学者常用技巧
Sep 02 Javascript
BootStrap 弹出层代码
Feb 09 Javascript
详解基于webpack搭建react运行环境
Jun 01 Javascript
weex slider实现滑动底部导航功能
Aug 28 Javascript
two.js之实现动画效果示例
Nov 06 Javascript
layui框架中layer父子页面交互的方法分析
Nov 15 Javascript
jQuery中可见性过滤器简单用法示例
Mar 31 jQuery
详解create-react-app 自定义 eslint 配置
Jun 07 Javascript
简述JS浏览器的三种弹窗
Jul 15 Javascript
prettier自动格式化去换行的实现代码
Aug 25 Javascript
微信小程序scroll-view不能左右滑动问题的解决方法
Jul 09 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基础知识:类与对象(4) 范围解析操作符(::)
2006/12/13 PHP
Zend Framework 2.0事件管理器(The EventManager)入门教程
2014/08/11 PHP
PHP 常用的header头部定义汇总
2015/06/19 PHP
Laravel 批量更新多条数据的示例
2017/11/27 PHP
利用javascript中的call实现继承
2007/01/22 Javascript
javascript确认框的三种使用方法
2013/12/17 Javascript
JS实现的页面自定义滚动条效果
2015/10/26 Javascript
js阻止浏览器默认行为触发的通用方法(推荐)
2016/05/15 Javascript
一道优雅面试题分析js中fn()和return fn()的区别
2016/07/05 Javascript
Javascript中常用的检测方法小结
2016/10/08 Javascript
js querySelector() 使用方法
2016/12/21 Javascript
无循环 JavaScript(map、reduce、filter和find)
2017/04/08 Javascript
Angular.JS中指令ng-if、ng-show/ng-hide和ng-switch的使用教程
2017/05/07 Javascript
javascript 开发之百度地图使用到的js函数整理
2017/05/19 Javascript
ReactNative列表ListView的用法
2017/08/02 Javascript
基于Vue渲染与插件的加载顺序的问题详解
2018/03/05 Javascript
简单的三步vuex入门
2018/05/20 Javascript
webpack3.0升级4.0的方法步骤
2020/04/02 Javascript
闭包在python中的应用之translate和maketrans用法详解
2014/08/27 Python
python实现微信远程控制电脑
2018/02/22 Python
python统计多维数组的行数和列数实例
2018/06/23 Python
Python实现基于KNN算法的笔迹识别功能详解
2018/07/09 Python
学python安装的软件总结
2019/10/12 Python
python 申请内存空间,用于创建多维数组的实例
2019/12/02 Python
瑞士香水购物网站:Parfumcity.ch
2017/01/14 全球购物
Ever New加拿大官网:彰显女性美
2018/10/05 全球购物
全球烹饪课程的领先预订平台:Cookly
2020/01/28 全球购物
泰国时尚电商:POMELO Fashion
2020/03/11 全球购物
日本最大的购物网站:日本乐天市场(Rakuten Ichiba)
2020/11/04 全球购物
Araks官网:纽约内衣品牌
2020/10/15 全球购物
写一个函数,要求输入一个字符串和一个字符长度,对该字符串进行分隔
2015/07/30 面试题
幼儿园大班家长评语
2014/04/17 职场文书
刑事上诉状(量刑过重)
2015/05/23 职场文书
Redis高级数据类型Hyperloglog、Bitmap的使用
2021/05/24 Redis
Python爬虫入门案例之回车桌面壁纸网美女图片采集
2021/10/16 Python
一次线上mongo慢查询问题排查处理记录
2022/03/18 MongoDB