2 回答

TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超13個(gè)贊
我們來看下文檔:
如果將任何項(xiàng)傳遞到 next() 函數(shù)(除了字符串 'route'),那么 Express 會(huì)將當(dāng)前請(qǐng)求視為處于錯(cuò)誤狀態(tài),并跳過所有剩余的非錯(cuò)誤處理路由和中間件函數(shù)。
因此示例代碼里調(diào)用 next(err)
將使得 Express 調(diào)用錯(cuò)誤處理中間件。至于如何判斷一個(gè)中間件是不是錯(cuò)誤處理中間件?

TA貢獻(xiàn)1872條經(jīng)驗(yàn) 獲得超4個(gè)贊
Express 會(huì)對(duì)中間件 fn 的參數(shù)個(gè)數(shù)進(jìn)行判斷,如果參數(shù)個(gè)數(shù)不等于 4 則認(rèn)為不是錯(cuò)誤處理中間件,則繼續(xù)調(diào)用next(err)
,這樣就會(huì)進(jìn)入到下一個(gè)中間件函數(shù),繼續(xù)進(jìn)行參數(shù)個(gè)數(shù)判斷,如此方式一直到某個(gè)中間件函數(shù)的參數(shù)個(gè)數(shù)是 4,就認(rèn)為找到了錯(cuò)誤處理中間件,然后執(zhí)行此中間件函數(shù)。
另外,使用 try catch 會(huì)不會(huì)觸發(fā)錯(cuò)誤處理中間件取決于你是否調(diào)用 next(err)
。
- 2 回答
- 0 關(guān)注
- 952 瀏覽
添加回答
舉報(bào)