uncaughtException后退出进程

时间:2019-10-28 14:09:30

标签: javascript node.js

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

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

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

还是我应该将process.exit(1)部分排除在外,因为不需要它了?

1 个答案:

答案 0 :(得分:2)

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

但是,将事件unhandledRejection(如果您在应用中使用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);
  });

此外,它是一个补充说明(Dario提及并引用了官方文档here,请参见documentation

  

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