# 错误处理机制

URL: https://caijiao.org/express/chapter2/4-error-handling
Source: docs/express/chapter2/4-error-handling.md
Description: 本章节介绍 Express 的错误处理机制，讲解如何使用错误处理中间件捕获和处理应用中的异常，提升应用的健壮性。

在 Express 应用中，错误处理是保证程序稳定运行的重要环节。Express 提供了专门的错误处理中间件来捕获和处理异常。

## 什么是错误处理中间件？

错误处理中间件与普通中间件类似，但必须定义四个参数：

```js
function (err, req, res, next) {
  // 错误处理逻辑
}
````

Express 识别到带有四个参数的函数时，会将其作为错误处理中间件，只在发生错误时执行。

## 如何使用错误处理中间件？

将错误处理中间件通过 `app.use()` 注册到应用中，通常放在所有路由和中间件之后。

```js
app.use((err, req, res, next) => {
  console.error(err.stack);
  res.status(500).send('服务器内部错误');
});
```

## 触发错误的方法

* 手动调用 `next()` 传入错误对象：

```js
app.get('/', (req, res, next) => {
  const err = new Error('自定义错误');
  next(err);
});
```

* 在异步代码中抛出异常或传递错误。

## 异步错误处理

对于异步函数，可以使用 `try-catch` 或第三方库如 `express-async-errors` 自动捕获。

```js
app.get('/async', async (req, res, next) => {
  try {
    await someAsyncTask();
    res.send('成功');
  } catch (err) {
    next(err);
  }
});
```

## 多个错误处理中间件

可以注册多个错误处理中间件，按注册顺序依次执行，方便分层处理不同类型的错误。

## 总结

错误处理中间件是 Express 提供的标准机制，用于捕获并统一处理应用中的异常，提升用户体验和系统稳定性。
