关于错误处理便于管理的数据规划

日常开发中无论是通过ajax通信、还是调用一些第三方的API,都会有很多的错误编码,笔者以前的写法一直都是每一个请求结果之后都去根据code码做出各种提示之类的操作,例如:

                if(code === 1){
                    console.log("code等于1啦")
                }else if(code === 2){
                    console.log("code等于2啦")
                }

很多的后端同学体恤前端将错误提示放到后端去做,将成功请求的code设置为0,所以前端有时可能只需要判断一下code是否为0,否则就alert后台返给的msg即可,这样做代码效果而言是没任何问题的,不过很是会有很多时候有一些单独的code编码是有特殊意义的,或者调用第三方工具时,个人的建议是将所有常量全部提取出来,所谓的常量包括你switch case中的各个value,if else中的各个判断条件中具体的数值或者字符串等,例如上面的例子中,code等于1,这个1和2就可以提取出来,否则时间长了之后,你真的不知道这个1和2代表的是什么。

下面是笔者调用scatter API对一些常见的错误code写的处理文件:

//状态管理对象
import {store} from '../index'
// 通用提示框
import Toast from '../container/toast'



/**
 * 402 用戶拒絕了簽名請求!
 * 500 区块链网络操作失败!
 * 3050003 餘額不足!
 * 3080004 CPU不足
 */
const errorCode = {
    402 : "scatter_RefuseToProvide",
    500 : "scatter_operationFailed",
    3050003 : "scatter_runningLow",
    3080004 : "scatter_alertCPU",
}

/**
 * 
 * @param {number} code 错误码 
 */
export const errorCodeFn = (code) => {
    const Intl = store.getState().lang.get;
    Toast.warning(Intl(errorCode[code]));
}

 之后在不等于正确code时,我们只需要调用这个errorCodeFn方法,将错误的code传递进来,之后进行字典查询将错误信息提示出来即可。

以上代码只是例子,并不可以直接使用,好的数据管理规范对日后维护代码及新增功能会更加方便,多想想数据管理在去操刀子写代码,一个项目你用一天的时间构思项目数据,四天的时间去写代码和你用两天的时间去构思项目数据,三天的时间写代码,所做出来的工作量基本上会是一样多的,而且后者会更好一些,前提是你要能想明白,哈哈哈哈。

猜你喜欢

转载自blog.csdn.net/baidu_38027860/article/details/86529011