You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

封装Axios全局请求函数后,错误无法被捕获的问题求助

问题原因与解决方案

你的问题出在两个核心逻辑错误上:

1. requests.js中post函数的错误处理逻辑错误

你在内部的catch回调里return error,这会把Axios请求失败时返回的rejected Promise强制转换成resolved Promise,resolve的值就是error对象。上层调用时,这个错误会被当成成功结果进入then回调,而非触发catch。

2. post函数未返回请求的Promise链

你声明了async函数,但内部没有返回Axios请求的Promise链,导致这个async函数默认返回一个resolve为undefined的Promise(结合你的描述,实际代码可能已补上return,但错误处理的问题依然是核心)。


修正后的代码

方案一:直接返回Axios请求Promise(推荐,最简洁)

// requests.js
import axios from 'axios';

export const post = (url, data, config) => {
    // 不内部捕获错误,让上层调用者自行处理成功/失败逻辑
    return axios.post(url, data, config);
}

方案二:用async/await并正确抛出错误

// requests.js
import axios from 'axios';

export const post = async (url, data, config) => {
    try {
        const result = await axios.post(url, data, config);
        return result;
    } catch (error) {
        // 抛出错误,让上层的catch捕获
        throw error;
    }
}

后续调用逻辑无需改动

修正post函数后,你原本在index.js里的调用代码即可正常工作:400/500等错误会进入catch回调,成功响应会进入then回调。

内容的提问来源于stack exchange,提问作者Jack The Baker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 14:25:30