在Express.js中,错误处理是通过中间件来处理的。 当一个请求处理过程中发生错误或异常时,中间件可以拦截这些错误并作出相应的处理。

Express.js提供了一个专门用于处理错误的中间件函数,即错误处理中间件。通过在应用程序中使用app.use()或者路由中使用router.use()将错误处理中间件添加到中间件链中,可以捕获和处理在请求处理过程中发生的错误。

下面是一个示例,展示了如何处理错误:

const express = require('express');
const app = express();
 
// 中间件链中的其它中间件
 
// 错误处理中间件
app.use((err, req, res, next) => {
  // 处理错误逻辑
  console.error(err);
  res.status(500).send('Internal Server Error');
});
 
// 启动服务器
app.listen(3000, () => {
  console.log('服务器已启动');
});

在上述示例中,通过app.use()将错误处理中间件添加到中间件链的末尾。当其他中间件中调用next(err)时,就会跳转到错误处理中间件,并将错误对象作为第一个参数传递给错误处理中间件。在错误处理中间件中,可以根据需要处理错误对象,例如打印错误信息、记录日志或发送自定义错误响应。

注意❗

需要注意的是,错误处理中间件必须定义为带有四个参数的函数,以便正确识别为错误处理中间件。第一个参数是错误对象,之后是请求、响应和next函数。

除了使用错误处理中间件外,还可以使用try-catch语句来捕获同步操作中的错误,并使用next(err)方法将错误传递给错误处理中间件

在异步操作中,可以使用Promise的.catch()捕获错误并通过next(err)方法将其传递给错误处理中间件,或者使用async/await语法结合try-catch来处理异步错误。