首页 > 解决方案 > uncaughtException 后退出进程

问题描述

在我的 NodeJS 应用程序中,每当遇到未处理的异常时,我都希望进程退出。

但是,根据 NodeJS 的文档,它似乎默认退出。所以我的问题是——我的代码中应该有这样的东西吗?

    process
        .on('uncaughtException', (err) => {
            log.error('uncaughtException:', err.message);
            log.error(err.stack);
            process.exit(1);
    });

或者我应该把process.exit(1)它排除在外,因为它不需要吗?

标签: javascriptnode.js

解决方案


该部分process.exit(1)是必需的,默认情况下它不会退出,您的应用程序可能会以意外状态终止,因此您应该process.exit(1)输入uncaughtException

unhandledRejection但是,放置事件(如果您在应用程序中使用s)也是一个很好的做法,Promise以便您更好地了解发生了什么。

process
  .on('unhandledRejection', (reason, p) => {
    console.error(reason, 'Unhandled Rejection at Promise', p);
  })
  .on('uncaughtException', err => {
    console.error(err, 'Uncaught Exception thrown');
    process.exit(1);
  });

此外作为旁注(达里奥提到,并在此处引用官方文档,请参阅文档

'uncaughtException' 的正确用法是在关闭进程之前同步清理分配的资源(例如文件描述符、句柄等)。


推荐阅读