HarmonyOS鸿蒙Next中使用Axios.ERR的code查询程序映射错误信息,不能进入循环

HarmonyOS鸿蒙Next中使用Axios.ERR的code查询程序映射错误信息,不能进入循环 如题,使用Axios时想要将错误Code使用Case查询,来查询汉语错误信息,

export function ErrcodePrint(err:AxiosError): string{
  let errMsg: string = "";
  switch (err.code) {
    case '2100001': {promptAction.showToast({ message: '非法参数值' ,duration:4000})};break;
    case '2100002': {promptAction.showToast({ message: '连接服务失败' ,duration:4000})};break;
    case '2100003': {promptAction.showToast({ message: '系统内部错误' ,duration:4000})};break;
    case '2300028': {promptAction.showToast({ message: '操作超时' ,duration:4000})};break;
    default: {promptAction.showToast({ message: `未知错误,${err.name}` ,duration:4000})};break;
  }
  return errMsg;

实际在出现错误代码例如2300028时会跳过,而不是进入,大佬们帮忙看一下哪儿的问题

例如下面

实际错误代码2300006,但是在2300006时间判断时直接跳过啦


更多关于HarmonyOS鸿蒙Next中使用Axios.ERR的code查询程序映射错误信息,不能进入循环的实战教程也可以访问 https://www.itying.com/category-93-b0.html

9 回复

【解决方案】

  1. err.code的类型匹配错误,err.code为Number类型,而代码中使用的是String类型,匹配不上导致跳出循环。可以参考axios库的错误码说明。 错误码:
    • 以下错误码的详细介绍参见http错误码。 HTTP错误关系映射:2300000+curl错误码。

更多关于HarmonyOS鸿蒙Next中使用Axios.ERR的code查询程序映射错误信息,不能进入循环的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


他给的类型是string|undefied,实际是number,强制成string已经可以正常查询啦,

Axios错误码可能以数字或字符串形式存在,需确保switch判断类型与err.code实际类型一致;官方错误码体系存在扩展可能性,如2300006这类未声明错误码会导致跳转default分支

解决方案

使用对象映射

const errorMap: Record<string, string> = {
  '2100001': '非法参数值',
  '2100002': '连接服务失败',
  '2100003': '系统内部错误',
  '2300028': '操作超时',
  '2300006': '自定义网络错误' // 补充新错误码
};

export function ErrcodePrint(err: AxiosError): void {
  const message = errorMap[err.code] || `未知错误,${err.name}`;
  promptAction.showToast({ message, duration:4000 });
}

Axios基础数据对于Code的定义就是string,不是数字number

cke_193.png

code 是number类型吧

有要学HarmonyOS AI的同学吗,联系我:https://www.itying.com/goods-1206.html

他基础js类中给的定义就是字符串String,

在HarmonyOS Next中,Axios.ERR的code查询程序映射错误信息时,若无法进入循环,可能是由于错误处理逻辑未正确捕获异步异常。请检查Promise链或async/await中的异常处理,确保在请求失败时能够触发错误回调。同时,确认网络请求配置和错误码映射逻辑是否正确,避免因未处理的异常导致循环中断。

在HarmonyOS Next中,AxiosError的code字段类型可能是字符串或数字,这可能导致switch-case匹配失败。建议检查err.code的实际类型,并确保case中的值类型一致。例如,如果err.code是数字类型,case应使用数字而非字符串:

switch (Number(err.code)) {
  case 2100001: { /* 处理逻辑 */ }; break;
  case 2300028: { /* 处理逻辑 */ }; break;
  // 其他case
}

或者统一转换为字符串比较:

switch (String(err.code)) {
  case '2100001': { /* 处理逻辑 */ }; break;
  case '2300028': { /* 处理逻辑 */ }; break;
  // 其他case
}

通过类型转换确保匹配逻辑一致,可以解决跳过case的问题。

回到顶部