2023-04-16 00:01:40 +08:00
|
|
|
---
|
|
|
|
title: 错误处理
|
|
|
|
---
|
|
|
|
|
|
|
|
# {{ $frontmatter.title }}
|
|
|
|
|
2023-04-16 13:39:10 +08:00
|
|
|
::: tip {{ $frontmatter.title }}
|
|
|
|
当请求失败时,可以对错误进行处理。
|
|
|
|
:::
|
|
|
|
|
2023-04-19 12:00:06 +08:00
|
|
|
## 校验状态抛出错误
|
2023-04-16 13:39:10 +08:00
|
|
|
|
2023-04-19 12:00:06 +08:00
|
|
|
可以设置校验状态,自定义抛出错误的状态码。
|
2023-04-16 13:39:10 +08:00
|
|
|
|
|
|
|
```ts
|
|
|
|
import axios from 'axios-miniprogram';
|
|
|
|
|
|
|
|
axios('https://api.com/test', {
|
|
|
|
validateStatus(status) {
|
2023-04-19 12:00:06 +08:00
|
|
|
return status === 200;
|
2023-04-16 13:39:10 +08:00
|
|
|
},
|
|
|
|
})
|
|
|
|
.then((response) => {
|
|
|
|
// 成功之后做些什么
|
|
|
|
})
|
|
|
|
.catch((error) => {
|
|
|
|
// 失败之后做些什么
|
|
|
|
});
|
|
|
|
```
|
|
|
|
|
2023-04-19 12:00:06 +08:00
|
|
|
## 用 `catch` 处理错误
|
2023-04-16 13:39:10 +08:00
|
|
|
|
|
|
|
可以处理不同类型的错误。
|
|
|
|
|
|
|
|
```ts
|
|
|
|
import axios from 'axios-miniprogram';
|
|
|
|
|
|
|
|
axios('https://api.com/test')
|
|
|
|
.then((response) => {
|
|
|
|
// 成功之后做些什么
|
|
|
|
})
|
|
|
|
.catch((error) => {
|
|
|
|
if (axios.isAxiosError(error)) {
|
|
|
|
// 响应错误
|
|
|
|
|
|
|
|
const {
|
|
|
|
// 错误消息
|
|
|
|
message,
|
|
|
|
|
|
|
|
// 请求配置
|
|
|
|
config,
|
|
|
|
|
|
|
|
// 请求任务,也就是请求函数返回的结果
|
|
|
|
request,
|
|
|
|
|
|
|
|
// 响应体
|
|
|
|
response,
|
|
|
|
} = error;
|
|
|
|
|
|
|
|
if (response.isFail) {
|
|
|
|
// 平台或适配器错误
|
|
|
|
} else {
|
|
|
|
// 使用 `validateStatus` 自定义抛出的错误
|
|
|
|
}
|
|
|
|
} else if (axios.isCancel(error)) {
|
|
|
|
// 取消请求
|
|
|
|
} else {
|
|
|
|
// 其他错误
|
|
|
|
}
|
2023-04-27 21:31:16 +08:00
|
|
|
|
|
|
|
return Promise.reject(error);
|
2023-04-16 13:39:10 +08:00
|
|
|
});
|
|
|
|
```
|
|
|
|
|
2023-04-19 12:00:06 +08:00
|
|
|
## 用 `errorHandler` 处理错误
|
2023-04-16 13:39:10 +08:00
|
|
|
|
|
|
|
可以使用 `errorHandler` 处理不同类型的错误。
|
|
|
|
|
|
|
|
```ts
|
|
|
|
import axios from 'axios-miniprogram';
|
|
|
|
|
|
|
|
axios('https://api.com/test', {
|
|
|
|
errorHandler(error) {
|
|
|
|
if (axios.isAxiosError(error)) {
|
|
|
|
// 响应错误
|
|
|
|
|
|
|
|
const {
|
|
|
|
// 错误消息
|
|
|
|
message,
|
|
|
|
|
|
|
|
// 请求配置
|
|
|
|
config,
|
|
|
|
|
|
|
|
// 请求任务,也就是请求函数返回的结果
|
|
|
|
request,
|
|
|
|
|
|
|
|
// 响应体
|
|
|
|
response,
|
|
|
|
} = error;
|
|
|
|
|
|
|
|
if (response.isFail) {
|
|
|
|
// 平台或适配器错误
|
|
|
|
} else {
|
|
|
|
// 使用 `validateStatus` 自定义抛出的错误
|
|
|
|
}
|
|
|
|
} else if (axios.isCancel(error)) {
|
|
|
|
// 取消请求
|
|
|
|
} else {
|
|
|
|
// 其他错误
|
|
|
|
}
|
2023-04-27 21:31:16 +08:00
|
|
|
|
|
|
|
return Promise.reject(error);
|
2023-04-16 13:39:10 +08:00
|
|
|
},
|
|
|
|
})
|
|
|
|
.then((response) => {
|
|
|
|
// 成功之后做些什么
|
|
|
|
})
|
|
|
|
.catch((error) => {
|
|
|
|
// 失败之后做些什么
|
|
|
|
});
|
|
|
|
```
|
2023-04-17 21:31:03 +08:00
|
|
|
|
|
|
|
## 全局错误处理
|
|
|
|
|
2023-04-19 12:00:06 +08:00
|
|
|
可以设置全局错误处理,对每个请求生效。
|
2023-04-17 21:31:03 +08:00
|
|
|
|
|
|
|
```ts
|
|
|
|
import axios from 'axios-miniprogram';
|
|
|
|
|
|
|
|
// 全局错误处理
|
|
|
|
axios.defaults.errorHandler = (error) => {
|
|
|
|
if (axios.isAxiosError(error)) {
|
|
|
|
// 响应错误
|
|
|
|
|
|
|
|
const {
|
|
|
|
// 错误消息
|
|
|
|
message,
|
|
|
|
|
|
|
|
// 请求配置
|
|
|
|
config,
|
|
|
|
|
|
|
|
// 请求任务,也就是请求函数返回的结果
|
|
|
|
request,
|
|
|
|
|
|
|
|
// 响应体
|
|
|
|
response,
|
|
|
|
} = error;
|
|
|
|
|
|
|
|
if (response.isFail) {
|
|
|
|
// 平台或适配器错误
|
|
|
|
} else {
|
|
|
|
// 使用 `validateStatus` 自定义抛出的错误
|
|
|
|
}
|
|
|
|
} else if (axios.isCancel(error)) {
|
|
|
|
// 取消请求
|
|
|
|
} else {
|
|
|
|
// 其他错误
|
|
|
|
}
|
2023-04-27 21:31:16 +08:00
|
|
|
|
|
|
|
return Promise.reject(error);
|
2023-04-17 21:31:03 +08:00
|
|
|
};
|
|
|
|
```
|