Express中的错误处理是使用中间件完成的.但是这个中间件具有特殊属性.错误处理中间件的定义方式与其他中间件函数相同,但错误处理函数必须有四个参数而不是三个 - err,req,res,next .例如,要发送任何错误的响应,我们可以使用 :
app.use(function(err,req,res,next) ){ console.error(err.stack); res.status(500).send('Something broke!'); });
直到现在我们才处理路线本身的错误.错误处理中间件允许我们分离错误逻辑并相应地发送响应.我们在中间件中讨论的next()方法将我们带到下一个中间件/路由处理程序.
对于错误处理,我们有 next(错误) 功能.对此函数的调用会跳过所有中间件并将我们匹配到该路由的下一个错误处理程序.让我们通过一个例子来理解这一点.
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 middlewareapp.use(function(err, req, res, next) { res.status(500); res.send("Oops, something went wrong.")});app.listen(3000);
此错误处理中间件可以策略性地放置在路由或包含条件之后,以检测错误类型并相应地响应客户端.上面的程序将显示以下输出.