無理由的異常管理

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

另外,還有一種方法可以處理叢集和域的異常。

域名在此處被棄用了更多資訊。