Nodejs 未捕获的异常处理

nav*_*een 1 javascript node.js

在 nodejs 应用程序中处理未捕获异常的首选方法是什么?

仅供参考,我有一个基于 Express 的 REST Api nodejs 服务器。

小智 5

很多人都这样做

process.on('uncaughtException', function (err) {
   console.log(err);
});
Run Code Online (Sandbox Code Playgroud)

这不好。当抛出未捕获的异常时,您应该考虑您的应用程序处于不干净的状态。此时您无法可靠地继续您的程序。

让您的应用程序崩溃、登录并重新启动。

process.on('uncaughtException', function (err) {
  console.error((new Date).toUTCString() + ' uncaughtException:', err.message);
  console.error(err.stack);
  // Send the error log to your email
  sendMail(err);
  process.exit(1);
})
Run Code Online (Sandbox Code Playgroud)

让您的应用程序在出现未捕获的异常时崩溃,并使用“永远”或“暴发户”之类的工具(几乎)立即重新启动它。您可以发送电子邮件以了解此类事件。

  • 在崩溃时重新启动它们的工具称为“进程管理器”。我正在使用 _PM2_ 来实现这一点。 (2认同)