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
【解决方案】
更多关于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
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的问题。