Node.js錯誤處理模式

異步語言中的錯誤處理,需要使用一些獨特的,非常規的方式。 Node.js中有七種主要的錯誤處理模式。讓我們簡單地看一下。

錯誤返回值

最簡單的模式,不能處理異步情況。如下:

拋出錯誤

這是一個常用的模式,函數執行時,如果出現錯誤情況,它會直接拋出一個錯誤。錯誤異常需要在catch中捕捉並處理。在try / catch中無法處理異步方法調用拋出的錯誤。要解決這個問題,我們需要使用domains。在node v0.8+版本的時候,發佈了一個模塊domain。這個模塊做的就是try...catch所無法做到的:捕捉異步回調中出現的異常。

Domain示例:

其中 run() 相當於 try, on('error') 相當於 catch

錯誤回調

通過回調返回錯誤是Node.js中最常見的錯誤處理模式。處理錯誤回調可能變得一團糟(回調地獄金字塔)。

訂閱,監聽錯誤

當發出錯誤時,錯誤被廣播給所有相關的訂閱者,按照訂閱順序,間隔執行。

Promise

Promise用於異步錯誤處理。如下:

Try...catch 和 async/await

ES7 Async / await能夠讓我們編寫看起來是同步的,異步JS代碼。

使用Await-to-js 第三方類庫

不使用try-catch塊的async / await。如下:

總結

以上幾種方式,基本包含了從早期到現在的所有錯誤處理方案。Aysnc/await語法更加直觀,簡潔,以及編寫同步代碼的體驗。不同環境下,使用最合適的方案,就是最好的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章