ExpressJS - 錯誤處理



Express 中的錯誤處理使用中介軟體完成。但是,此中介軟體具有特殊屬性。錯誤處理中介軟體的定義方式與其他中介軟體函式相同,但錯誤處理函式必須有四個引數,而不是三個——err、req、res、next。例如,要在任何錯誤中傳送響應,我們可以使用 −

app.use(function(err, req, res, next) {
   console.error(err.stack);
   res.status(500).send('Something broke!');
});

到目前為止,我們一直在路由中處理錯誤。錯誤處理中介軟體允許我們分離我們的錯誤邏輯並相應地傳送響應。我們在中介軟體中討論的 next() 方法將我們帶到下一個中介軟體/路由處理程式

對於錯誤處理,我們有 next(err) 函式。呼叫此函式會跳過所有中介軟體,並匹配我們到該路由的下一個錯誤處理程式。我們透過一個示例來理解這一點。

var express = require('express');
var app = express();

app.get('/', function(req, res){
   //Create an error and pass it to the next function
   var err = new Error("Something went wrong");
   next(err);
});

/*
 * other route handlers and middleware here
 * ....
 */

//An error handling middleware
app.use(function(err, req, res, next) {
   res.status(500);
   res.send("Oops, something went wrong.")
});

app.listen(3000);

此錯誤處理中介軟體可以策略性地放置在路由之後,或包含條件來檢測錯誤型別並相應地向客戶端響應。上面的程式將顯示以下輸出。

Error handling
廣告