# 错误处理
# 需求分析
在上一章节,我们实现了 ts-axios 的基础功能,但目前为止我们都是处理了正常接收请求的逻辑,并没有考虑到任何错误情况的处理,这对于一个程序的健壮性而言是远不够的,因此我们这一章需要对 AJAX 各种错误情况做处理。
并且我们希望程序也能捕获到这些错误,做进一步的处理。
axios({
method: 'get',
url: '/error/get'
}).then((res) => {
console.log(res)
}).catch((e) => {
console.log(e)
})
@前端进阶之旅: 代码已经复制到剪贴板
如果在请求的过程中发生任何错误,我们都可以在 reject 回调函数中捕获到。
我们把错误分成了几类,接下来我们就来分别处理这些错误情况。
# 处理网络异常错误
当网络出现异常(比如不通)的时候发送请求会触发 XMLHttpRequest 对象实例的 error 事件,于是我们可以在 onerror 的事件回调函数中捕获此类错误。
我们在 xhr 函数中添加如下代码:
request.onerror = function handleError() {
reject(new Error('Network Error'))
}
@前端进阶之旅: 代码已经复制到剪贴板
# 处理超时错误
我们可以设置某个请求的超时时间 timeout,也就是当请求发送后超过某个时间后仍然没收到响应,则请求自动终止,并触发 timeout 事件。
请求默认的超时时间是 0,即永不超时。所以我们首先需要允许程序可以配置超时时间:
