由于nodejs是非阻塞单进程单线程的,一旦nodejs抛出异常,整个服务就会停掉。服务将会非常不稳定。

错误异常有两种场景的出现,一种是代码运行中throw new error没有被捕获,另一种是Promise的失败回调函数,没有对应的reject回调函数处理,针对这两种情况Nodejs都有默认的统一处理方式,就是给整个进程process对象监听相应的错误事件。

process.on('uncaughtException',function(err){}) //监听未捕获的异常process.on('unhandledRejection',function(err,promise){}) //监听Promise没有被捕获的失败函数
  1. 使程序鲁棒,在有可能出现异常的地方,全部使用try { } catch(){ }进行嵌套。
  2. express作为nodejs比较常用的框架,其实nodejs自己也有一定的异常错误捕获机制
// Express' errorHandler
function errorHandler(err, req, res, next) {
console.error(err.stack);
}
app.use(errorHandler);
  1. 使用domain模块,先下载domain, “npm install domain”
//Domain捕获异常
app.use(function(req, res, next) {
var domain = createDomain();
domain.on('error', function(err) {
// alternative: next(err)
console.log(err.stack);
res.statusCode = 500;
res.end(err.message + '\n');
domain.dispose();
});
domain.enter();
next();
});

nodejs 异常捕获相关推荐

  1. domain: node.js的异常捕获利器

    众所周知,异常捕获是保障服务健壮性常用的手段,node.js也自然支持这一特性.但node.js异步.基于消息的编程方式给异常捕获带来一些困难,请看下面的例子: process.on('uncaugh ...

  2. Spring Boot配置全局异常捕获

    1 SpringBoot配置全局的异常捕获 项目的说明 配置thymeleaf作为视图模板 ExceptionController.java模拟测试用 MyAjaxExceptionHandler.j ...

  3. 简单介绍Go语言错误处理异常捕获+异常抛出

    这篇文章主要介绍了Go语言错误处理异常捕获和异常抛出,Go语言的作者认为java等语言的错误处理底层实现较为复杂,就实现了函数可以返回错误类型以及简单的异常捕获,虽然简单但是也非常精妙,大大的提高了运 ...

  4. 用c实现跨平台异常捕获机制

    为什么80%的码农都做不了架构师?>>>    TBOX封装了一套跨平台的异常捕获实现,来模拟windows的seh异常处理功能,而且是线程安全的. 在linux/mac下的实现 使 ...

  5. python网络编程-异常处理-异常捕获-抛出异常-断言-自定义异常-UDP通信-socketserver模块应用-03

    python网络编程-异常处理-异常捕获-抛出异常-断言-自定义异常-UDP通信-socketserver模块应用-03 参考文章: (1)python网络编程-异常处理-异常捕获-抛出异常-断言-自 ...

  6. Java多层的异常捕获

    Java多层的异常捕获 参考文章: (1)Java多层的异常捕获 (2)https://www.cnblogs.com/somedayLi/p/7847136.html 备忘一下.

  7. ORACLE 存储过程异常捕获并抛出

    ORACLE 存储过程异常捕获并抛出 参考文章: (1)ORACLE 存储过程异常捕获并抛出 (2)https://www.cnblogs.com/wdw31210/p/7009731.html 备忘 ...

  8. SQLServer异常捕获

    SQLServer异常捕获 参考文章: (1)SQLServer异常捕获 (2)https://www.cnblogs.com/OliverQin/p/4994717.html 备忘一下.

  9. Spring boot异常统一处理方法:@ControllerAdvice注解的使用、全局异常捕获、自定义异常捕获

    Spring boot异常统一处理方法:@ControllerAdvice注解的使用.全局异常捕获.自定义异常捕获 参考文章: (1)Spring boot异常统一处理方法:@ControllerAd ...

最新文章

  1. React 项目---class 创建组件 (11)
  2. IBM X System ServerGuide 8.41 服务器 系统安装引导盘
  3. 为什么C++(感谢waterwalk翻译)
  4. Invocation of init method failed; nested exception is org.hibernate.InvalidMappingException: Could n
  5. OpenGL sparsetexture稀疏纹理的实例
  6. 基于Win32Api创建窗口程序
  7. python二分法编程_python基础18——二分法面向过程匿名函数
  8. 攻防世界web新手区解题 /cookie / disabled_button / weak_auth
  9. 暂且解决INSTALL_FAILED_SHARED_USER_INCOMPATIBLE错误
  10. 使用nginx反向代理解决前端跨域问题
  11. 制作1G的U盘启动盘
  12. 复制iPhone端百度网盘下载好的视频到电脑(Mac / Windows)- iOS 12.4
  13. Windows用户名中文修改英文无感实现操作方法
  14. 百度离线地图服务器搭建
  15. Python unpickle 命令执行漏洞复现总结
  16. 关于域名的说法,一级,二级
  17. luooj1559最强阵容加强版
  18. Superpro5000的使用经验小结
  19. VC 格式化代码快捷键
  20. PNETLAB中可以导入的交换机、防火墙等设备镜像

热门文章

  1. echarts中国旅客迁徙地图
  2. 华为OD机试真题 Java 实现【投篮大赛】【2023Q1 100分】
  3. form action=./ 或者为form action=/ 的提交路径
  4. 大学毕业……向新的方向奋斗
  5. 动物园(虚函数与多态)
  6. oblog为何继续采用js+html
  7. 电子计算机承重,编辑暴力实测 PC主板能够负重多少硬件?
  8. terracotta_具有Spring Web Flow和Terracotta的Spring Web应用程序
  9. 【BZOJ 1862】 [Zjoi2006]GameZ游戏排名系统
  10. 【2021-2022 春学期】人工智能-作业1:PyTorch实现反向传播