📅  最后修改于: 2020-10-25 11:11:49             🧑  作者: Mango
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);
该错误处理中间件可以策略性地放置在路由之后,或包含条件以检测错误类型并相应地响应客户端。上面的程序将显示以下输出。