Express.js 错误处理

Express 中的错误处理是使用中间件完成的。 但是这个中间件有特殊的属性。 错误处理中间件的定义方式与其他中间件函数相同,除了错误处理函数必须有四个参数而不是三个——errreqresnext。 例如,要发送任何错误的响应,我们可以使用

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){
   // 创建一个错误并将其传递给下一个函数
   var err = new Error("Something went wrong");
   next(err);
});

/*
 * 此处的其他路由处理程序和中间件
 * ....
 */

// 错误处理中间件
app.use(function(err, req, res, next) {
   res.status(500);
   res.send("Oops, something went wrong.")
});

app.listen(3000);

这个错误处理中间件可以战略性地放置在路由之后,或者包含检测错误类型并相应地响应客户端的条件。

查看笔记

扫码一下
查看教程更方便