秒杀项目基础部分总结-----3(处理错误)

建立一个error包
定义一个接口CommonError,定义三个抽象方法:
获取错误码
获取错误信息
设置错误码
定义一个枚举类型的类,定义错误码及对应的错误信息。实现CommonError接口,通过有参数构造,拿到错误码和错误信息,并实现接口的三个方法,,,,即:将获取到的错误码和错误信息通过get()方法给调用者,通过set()方法允许调用者设置错误码和错误信息

public enum EnumBusinessError implements CommonError {
    //通用错误类型000001
    PARAMETER_VALIDATION_ERROR(100001,"参数不合法"),
    UNKNOWN_ERROR(100002,"未知错误"),
    //100000开头为用户信息相关错误定义
    USER_NOT_EXIST(20001,"用户不存在"),
    USER_LOGIN_FAIL(20002,"用户手机号或密码不正确"),
    USER_NOT_LOGIN(20003,"用户还未登陆"),
    //30000开头为交易信息错误
    STOCK_NOT_ENOUGH(30001,"库存不足")
    ;
    private int errCode;
    private String errMsg;
    EnumBusinessError(int errCode, String errMsg) {
        this.errCode = errCode;
        this.errMsg = errMsg;
    }
    @Override
    public int getErrCode() {
        return errCode;
    }
    @Override
    public String getErrMsg() {
        return errMsg;
    }
    @Override
    public CommonError setErrMsg(String errMsg) {
       this.errMsg=errMsg;
        return this;
    }
}

再写一个异常类包装一下这个错误码和错误信息的处理:
首先该异常类继承了Exception,实现了CommonError接口:

由于这个异常类的构造方法的参数时CommonError,之后使用的时候可以将通过在BusinessException类的方法中传递CommonError的实现类EnumBusinessError来设置错误码和错误信息。

//包装器业务异常类实现
public class BusinessException extends Exceptidion implements CommonError {
    private CommonError commonError;
    //直接接收EnumBusinessError的传参用于构造业务异常
    public BusinessException(CommonError commonError){
        super();
        this.commonError=commonError;
    }
    //接收定义errMsg的方式构造业务异常
    public BusinessException(CommonError commonError,String errMsg){
        super();
        this.commonError=commonError;
        this.commonError.setErrMsg(errMsg);
    }
    @Override
    public int getErrCode() {
        return this.commonError.getErrCode();
    }
    @Override
    public String getErrMsg() {
        return this.commonError.getErrMsg();
    }
    @Override
    public CommonError setErrMsg(String errMsg) {
        this.commonError.setErrMsg(errMsg);
        return this;
    }
}

建一个包response,再建一个结果类:CommonReturnType
该类中定一个变量status表示返回结果的状态,定义一个object类型的变量data,用于封装后台返回的数据,如果后台的处理是成功的,这个data里就是前端需要的data数据,如果后台返回失败,这个data里就是错误码格式。
该类中还有一个用于返回的通用方法create,只有一个参数satus,下面再重载这个方法,有两个参数status和data,将状态status的值写死为success,有两个参数,另外一个参数是data,也就是后台在调用者个方法时,若是有要返回给前端的数据,则将数据放在data中,状态放在status中,要是没有要返回给前台的数据,直接在该方法中传递一个参数null,表示返回状态为成功。

public class CommonReturnType {

    //表明对应的请求结果有"success"或"fail"
    private String status;
    //若status==success,则data内返回前端需要的json数据
    //若status==fail,则data内返回错误码格式
    private Object data;
    //定义一个通用的创建方法
    public static CommonReturnType create(Object result){
        return CommonReturnType.create(result,"success");
    }
    public static CommonReturnType create(Object result,String status){
       CommonReturnType type=new CommonReturnType();
       type.setStatus(status);
       type.setData(result);
       return type;
    }
    public String getStatus() {
        return status;
    }
    public void setStatus(String status) {
        this.status = status;
    }
    public Object getData() {
        return data;
    }
    public void setData(Object data) {
        this.data = data;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值