使用process.on('uncaughtException', ()=>{})捕获异常的问题

来源:4-4 全局异常处理中间件编写

Viavia

2019-05-11

上次看了老师你的tp5课程用node跟着写了个异常处理类,用的是 uncaughtException 、unhandledRejection这两个事件可以捕获所有异常,但是node官方文档推荐做一些清理操作后退出进程, 这个该怎么理解呢?
图片描述

export default class Exception {
  constructor() {
    process.on('unhandledRejection', this.handler)
    process.on('uncaughtException', this.handler)
  }

  handler(err) {
    let ctx = err.ctx
    // 如果是自定义错误
    if(err instanceof CustomException) {
      ctx.status = err.status
      ctx.body = {
        message: err.message,
        error: err.error
      }
    } else {
      // 记录日志 退出进程
      process.exit(1)
    }
  }
}
写回答

1回答

7七月

2019-05-11

意思就是说,建议出现这种未定义的异常,应该重启或者切换到另外的应用上。这个可以用Pm2启动多个进程,但是,咱们课程里的方法,理论上是可以保证不会出现未捕获的异常这种情况。

0
1
Viavia
非常感谢!
2019-05-11
共1条回复

Node.js+Koa2+MySQL打造前后端分离精品项目《旧岛》

理解异步编程本质/培养面向对象思维,独立完成Node.js服务端开发

2223 学习 · 878 问题

查看课程