在nodejs应用程序中处理uncaughtexception的首选方法是什么?
仅供参考,我正在使用基于Express的REST Api nodejs服务器。
答案 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)
异常应该做两件事之一:
如果你有未被捕获的异常,你试图摆脱你的程序,你要么有一个bug要修复,要么你需要捕获该异常并正确处理它
复杂的异步代码,通常涉及大量无组织的未授权承诺,通常是许多未被捕获的异常问题的原因 - 您需要仔细观察如何返回您的承诺链
唯一永久的解决方案是采用现代异步/等待代码实践来保持异步代码的可维护性