建立一个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;
}
}