如何读取Axios抛出的异常错误对象及处理状态码问题
Axios错误处理常见问题解答
1. 如何读取AxiosError的非标准输出信息
你看到的不是标准JSON,是Axios抛出的AxiosError实例的控制台打印格式,直接通过对象属性访问就能获取信息:
- 直接访问内置属性:比如
error.code(错误码,如ERR_BAD_REQUEST)、error.config(请求配置)、error.message(错误描述); - 如果是HTTP响应错误(比如404这类状态码错误),还能通过
error.response拿到响应对象,里面包含status、data等字段; - 要是想转成标准JSON格式,调用
error.toJSON()方法,返回的就是可直接解析的JSON对象。
示例代码:
try { await axios.post('https://myserver.url/myapifunction'); } catch (error) { // 直接访问属性 console.log('错误码:', error.code); console.log('请求URL:', error.config.url); // 转成标准JSON const errorJson = error.toJSON(); console.log('标准JSON格式错误信息:', errorJson); }
2. 请求失败时如何获取状态码
请求失败分两种场景,要做判断处理:
- HTTP响应错误(状态码非2xx):这时
error.response存在,状态码在error.response.status里; - 网络错误/请求未发送成功:比如断网、域名解析失败,此时
error.response为undefined,没有status字段,需要单独处理这种情况。
示例代码:
try { const response = await axios.post('https://myserver.url/myapifunction'); console.log('成功状态码:', response.status); } catch (error) { if (error.response) { // HTTP响应错误,有状态码 console.log('错误状态码:', error.response.status); console.log('响应内容:', error.response.data); } else { // 无响应,比如网络问题 console.log('请求失败:', error.message); // 可以设置默认状态码或者提示用户检查网络 } }
内容的提问来源于stack exchange,提问作者Atul
相关产品推荐
相关产品推荐

