無理由的異常管理
因為 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
});
另外,還有一種方法可以處理叢集和域的異常。
域名在此處被棄用了更多資訊。