创建 AxiosError 类 的必要性

来源:6-4 错误信息增强 - 创建 AxiosError 类

aznmoe

2019-06-25

老师,我不是很理解为什么要创建 一个 AxiosError 类来 进行错误的信息的处理。
我们完全可以 在 reject 的时候 reject 一个 对象出去吧。效果也是等同的?
事实上 我们 在 resolve 的时候 就是 直接 resolve 出去一个 对象了啊,而并没有说为 resolve 的信息 而创建一个 AxiosResponse 类,仅仅是有一个 AxiosResponse Interface。
如果 有一个 AxiosResponse 类,那么 我们就可以将在 上一节当中处理 响应 headers 及 处理 响应 data 放置到 类中,而不是 全部在 xhr.ts 当中处理?
两者间 为什么会有要这样处理的差异?

然后,我能够想到的 用一个类处理信息的好处如下

  1. 方便以后的的代码扩展维护,如果以后新增的其它错误信息,不需要跑到 xhr.ts 当中修改,而直接修改 error.ts 当中即可
  2. 应该也是结合第一点来说的,既是 很好的做到了 代码模块化处理,代码分割?

如果 还有其它的好处,请老师也 一一列举下吧

写回答

2回答

ni_我_ta

2020-03-10

单独创建一个AxiosError类主要是为了组织代码,因为课程中有多个地方调用了createError(返回AxiosError类实例),不用AxiosError类组织,那么你就要在每个抛出错误的地方返回一个字面量对象(有很多属性),代码结构不好。resolve的时候之所以没有用类组织数据,是因为只在一个地方使用了resolve

0
0

ustbhuangyi

2019-06-25

AxisoError 类的另一个好处是标识它是一个由 Axios 内部发出的错误,因为它有一个 isAxiosError 为 true 的标识。因为在实际使用过程中可能出现的错误原因会有很多,这样用户可以在 catch 中对 e 做判断了。

0
2
ustbhuangyi
回复
aznmoe
AxiosError 可以通过类的方式继承 Error,而 AxiosResponse 不需要继承
2019-06-25
共2条回复

下一代前端开发语言 TypeScript从零重构axios

课程从零开始重构功能完整的JS库,是学习造轮子的不二之选!

2629 学习 · 877 问题

查看课程