无理由的异常管理

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

另外,还有一种方法可以处理集群和域的异常。

域名在此处被弃用了更多信息。