在 Express 框架里,配置一个默认的错误处理中间件需要遵循哪些步骤?
考察说明
考查对 Express 错误处理机制的理解,尤其是错误中间件的定义和注册时机。
回答思路
- 【回答框架 1】错误处理中间件有四个参数(err, req, res, next),必须提供四个参数才能被 Express 识别为错误处理中间件。它通常放在所有路由和中间件之后,用于捕获前面传递下来的错误。
- 【回答框架 2】通过 app.use 注册错误处理中间件,并设置响应状态码和返回信息。可基于 err.status 或 err.statusCode 区分错误类型,没有设置时默认使用 500。
- 【回答框架 3】Express 5 中异步错误会自动传递给错误中间件,而 Express 4 需要在异步路由或中间件中显式调用 next(err) 才能捕获 Promise 拒绝。
- 【回答框架 4】默认错误处理中间件应避免在响应已发送后再次修改响应,否则 Express 会忽略后续处理并关闭连接。
- 【关键点 1】错误中间件必须保留四个参数,以区分普通中间件。
- 【关键点 2】通过 app.use 在路由之后注册,并处理 err 对象。
- 【关键点 3】在 Express 4 中,异步错误需通过 next(err) 传递。
- 【关键点 4】响应已发送后,错误处理中间件无法再次修改响应。
- 【易错点 1】忽略 next 参数,导致错误处理中间件被视为普通中间件而不生效。
- 【易错点 2】在异步操作中未捕获 Promise 拒绝,导致错误无法到达错误处理中间件(Express 4 场景)。
- 【易错点 3】在响应已开始发送后仍尝试修改响应,造成连接中断或异常。