- ExpressJS 教程
- ExpressJS - 主页
- ExpressJS - 概览
- ExpressJS - 环境
- ExpressJS - Hello World
- ExpressJS - 路由
- ExpressJS - HTTP 方法
- ExpressJS - URL 构建
- ExpressJS - 中间件
- ExpressJS - 模板
- ExpressJS - 静态文件
- ExpressJS - 表单数据
- ExpressJS - 数据库
- ExpressJS - Cookie
- ExpressJS - 会话
- ExpressJS - 身份验证
- ExpressJS - RESTful API
- ExpressJS - 脚手架
- ExpressJS - 错误处理
- ExpressJS - 调试
- ExpressJS - 最佳实践
- ExpressJS - 资源
- ExpressJS 有用资源
- ExpressJS - 快速指南
- ExpressJS - 有用资源
- ExpressJS - 讨论
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);
此错误处理中间件可以策略性地放置在路由之后,或包含条件来检测错误类型并相应地向客户端响应。上面的程序将显示以下输出。
广告