Nodejs未被捕获的异常处理

时间:2018-05-06 17:21:07

标签: javascript node.js

在nodejs应用程序中处理uncaughtexception的首选方法是什么?

仅供参考,我正在使用基于Express的REST Api nodejs服务器。

2 个答案:

答案 0 :(得分:1)

很多人这样做

process.on('uncaughtException', function (err) {
   console.log(err);
});

这很糟糕。当抛出未捕获的异常时,您应该将您的应用程序视为不洁净状态。此时您无法可靠地继续您的计划。

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

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);
})

让您的应用程序在发生未捕获的异常时崩溃,并使用像forever或upstart这样的工具(几乎)立即重启它。您可以发送电子邮件以了解此类事件。

答案 1 :(得分:0)

异常应该做两件事之一:

  1. 由程序正确捕获并处理
  2. 导致程序在灾难性的愤怒失败中终止
  3. 如果你有未被捕获的异常,你试图摆脱你的程序,你要么有一个bug要修复,要么你需要捕获该异常并正确处理它

    复杂的异步代码,通常涉及大量无组织的未授权承诺,通常是许多未被捕获的异常问题的原因 - 您需要仔细观察如何返回您的承诺链

    唯一永久的解决方案是采用现代异步/等待代码实践来保持异步代码的可维护性