# 错误处理

URL: https://caijiao.org/yup/errors
Source: docs/yup/errors.md
Description: Yup 提供详细的错误消息机制，方便用户展示和调试验证结果。

Yup 提供详细的错误信息机制，方便开发者捕获、显示和调试验证失败的结果。

## 导入方式

```js
import { object, string, number } from 'yup';
````

## 捕获验证错误

```js
const schema = object({
  name: string().required('姓名不能为空'),
  age: number().required('年龄不能为空').positive('年龄必须为正数')
});

schema.validate({ name: '', age: -5 })
  .catch(err => {
    console.log(err.errors); // ["姓名不能为空", "年龄必须为正数"]
  });
```

* `err.errors`：数组形式，包含所有验证失败信息
* `err.path`：出错字段路径
* `err.message`：单条错误信息（通常为第一个错误）

## 捕获同步验证错误

```js
try {
  schema.validateSync({ name: '', age: -5 });
} catch (err) {
  console.log(err.errors);
}
```

* `validateSync` 用于同步验证
* 异常对象同样包含 `errors`、`path`、`message`

## 自定义错误信息

```js
const schema = string()
  .required('字段不能为空')
  .min(3, '最少 3 个字符')
  .matches(/^[a-z]+$/, '只能包含小写字母');
```

* Yup 支持为每个规则指定自定义错误信息
* 也可在 `test` 方法中自定义错误提示

## 小结

* Yup 错误信息详细且可自定义
* 可以获取全部错误数组或单条错误信息
* 适合在表单中显示给用户或调试数据验证问题
