无理由的异常管理
因为 Node.js 在单个进程上运行,所以未开发的异常是开发应用程序时需要注意的问题。
默默处理异常情况
大多数人让 node.js 服务器默默地吞下错误。
- 默默处理异常
process.on('uncaughtException', function (err) {
console.log(err);
});
这很糟糕,它会起作用但是:
-
根本原因仍然未知,因此无法解决导致异常(错误)的原因。
-
如果数据库连接(池)由于某种原因而关闭,这将导致错误的持续传播,这意味着服务器将运行但不会重新连接到 db。
回到初始状态
如果出现 uncaughtException
,最好重新启动服务器并将其恢复到初始状态,我们知道它将起作用。记录异常,应用程序终止,但由于它将在一个容器中运行,以确保服务器正在运行,我们将实现服务器的重新启动(返回到初始工作状态)。
- 永久安装(或其他 CLI 工具以确保节点服务器连续运行)
npm install forever -g
- 永远启动服务器
forever start app.js
它开始的原因以及我们永远使用的原因是服务器永久终止后,进程将再次启动服务器。
- 重新启动服务器
process.on('uncaughtException', function (err) {
console.log(err);
// some logging mechanisam
// ....
process.exit(1); // terminates process
});
另外,还有一种方法可以处理集群和域的异常。
域名在此处被弃用了更多信息。