淺析Node中Express的錯誤處理中介軟體
這篇文章帶大家了解一下Node中Express的錯誤處理中間件,介紹一下定義錯誤處理中間件、與 async/await 一起使用的方法,希望對大家有所幫助!
Express 的錯誤處理中間件可協助您處理錯誤,而無需重複相同的工作。假設您直接在Express 路由處理程序中處理錯誤:
1 2 3 4 5 6 7 8 9 |
|
上面的程式碼可以正常工作,但是,如果有數百個介面呢,那麼錯誤處理邏輯將變得不可維護,因為它被重複了數百次。
定義錯誤處理中間件
Express 根據中介軟體函數所採用的參數數量分為不同的型別。接受 4 個參數的中間件函數被定義為錯誤處理中間件,只有在發生錯誤時才會被呼叫。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
Express 會自動為您處理同步錯誤,如上面的 routeHandler()
方法。但是 Express 不處理非同步錯誤。如果出現非同步錯誤,則需要呼叫 next()
。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
請記住,Express 中間件是按順序執行的。您應該在所有其他中間件之後,最後定義錯誤處理程序。否則,您的錯誤處理程序將不會被呼叫:
與async/await
一起使用
Express 無法捕獲promise
的異常, Express 在ES6 之前編寫,對於如何處理async/await
它扔沒有好的解決方案。
例如,下面的伺服器永遠不會成功發送HTTP 回應,因為Promise reject
永遠不會被處理:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
我們可以封裝或使用現有的程式庫來進行捕獲。
首先,我們先簡單封裝一個函數,將 async/await
與 Express 錯誤處理中間件連結起來。
注意:非同步函數會傳回Promise,因此您需要確保
catch()
所有錯誤並將其傳遞給next()
。
1 2 3 4 5 6 7 8 9 10 11 |
|
使用第三方函式庫express-async-errors
,一個簡單的ES6 async/await 支援hack:
1 2 3 4 5 |
|
最後
Express 錯誤處理中間件可讓您以最大化關注點分離的方式處理錯誤。您不需要處理業務邏輯中的錯誤,如果使用 async/await
,甚至不需要 try/catch
。這些錯誤將出現在您的錯誤處理程序中,然後您的錯誤處理程序可以決定如何回應請求。確保在下一個 Express 應用程式中充分利用這項強大功能!
更多node相關知識,請造訪:nodejs 教學!
以上是淺析Node中Express的錯誤處理中介軟體的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

基於無阻塞、事件驅動建立的Node服務,具有記憶體消耗低的優點,非常適合處理海量的網路請求。在海量請求的前提下,就需要考慮「記憶體控制」的相關問題了。 1. V8的垃圾回收機制與記憶體限制 Js由垃圾回收機

選擇一個Node的Docker映像看起來像是小事,但是映像的大小和潛在漏洞可能會對你的CI/CD流程和安全造成重大的影響。那我們要如何選擇一個最好Node.js Docker映像呢?

怎麼處理文件上傳?以下這篇文章為大家介紹一下node專案中如何使用express來處理文件的上傳,希望對大家有幫助!

文件模組是對底層文件操作的封裝,例如文件讀寫/打開關閉/刪除添加等等文件模組最大的特點就是所有的方法都提供的**同步**和**異步**兩個版本,具有sync 字尾的方法都是同步方法,沒有的都是異

事件循環是 Node.js 的基本組成部分,透過確保主執行緒不被阻塞來實現非同步編程,了解事件循環對建立高效應用程式至關重要。以下這篇文章就來帶大家深入了解Node中的事件循環 ,希望對大家有幫助!

如何用pkg打包nodejs可執行檔?以下這篇文章跟大家介紹一下使用pkg將Node專案打包為執行檔的方法,希望對大家有幫助!

node無法用npm指令是因為沒有正確配置環境變量,其解決方法是:1、開啟“系統屬性”;2、找到“環境變數”->“系統變數”,然後編輯環境變數;3、找到nodejs所在的資料夾;4、點選「確定」即可。
