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

如何正确捕获Axios中的ECONNRESET错误?

精准捕获Axios中的ECONNRESET错误并静默告警

判断Axios错误及ECONNRESET类型的关键依据

要精准识别Axios抛出的ECONNRESET错误,需检查以下核心变量:

  • error.isAxiosError:确认错误是Axios封装的请求类错误,而非代码逻辑中抛出的普通错误。
  • error.code:Axios会为网络错误分配对应错误码,ECONNRESET错误的code字段值固定为'ECONNRESET'。
  • !error.response:ECONNRESET属于网络层错误(请求未收到服务器响应就中断),这类错误不会存在response对象;若为HTTP响应错误(如4xx、5xx),则会有error.response。

实现代码

修改catch分支逻辑,单独处理ECONNRESET错误,其余错误保持原有处理流程:

static getOrder = async (apiEndpoint, orderId, instrument) => {
    return await new Promise((next, fail) => {
        axios({
            method: 'get',
            url: apiEndpoint,
            headers: {
                'X-MBX-APIKEY': apiKey,
            }
        }).then(function (response) {
            // some op
            next(data);
        }).catch(function (error) {
            // 精准匹配ECONNRESET错误
            if (error.isAxiosError && error.code === 'ECONNRESET' && !error.response) {
                // 静默告警逻辑:比如只打日志不中断流程
                console.warn(`[静默告警] getOrder ${orderId} 发生连接重置错误:`, error.message);
                // 可根据业务需求决定返回值,比如返回空数据或标记状态
                next(null);
                return;
            }
            // 其他错误按原有逻辑处理
            fail(Helpers.handleAxiosError(error, "getOrder " + orderId));
        });
    });
}

补充说明

  • 部分环境下,系统级错误码会存储在error.errno中(比如ECONNRESET对应数值104),但Axios已通过error.code封装了该标识,优先使用error.code即可。
  • 静默告警的具体形式可按需调整:比如写入日志文件、发送低优先级监控通知,无需抛出错误中断业务流程。

内容的提问来源于stack exchange,提问作者markzzz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 22:25:06