java 设计

springBoot的返回code数据的处理以及统一异常处理

2018-03-18  本文已影响0人  蓝胖子的编程梦

1,首先返回给前端的消息有提示操作正确的消息,也有提示操作错误的消息。而这样的消息都应该以一种统一的格式返回给前端,前端根据返回的消息中的消息码判断操作成功或者失败.所以新建ResponseMessage封装这种数据格式.用来lombok省去自己写get,set方法.
import lombok.Data;

/**

//错误码
private int code;

//信息描述
private String msg;

//具体的信息内容

private T data;

}
2,消息码的定义应该封装到一个统一的地方,这里新建一个枚举ResultEnum,这样所有
操作的消息码和消息描述就放在了一个地方。
public enum ResultEnum {

UNKNOWN_ERROR(-100, "未知错误"),
NEED_LOGIN(-1, "未登录"),
REPEAT_REGISTER(-2, "该用户已注册"),
USER_NOT_EXIST(-3, "不存在该用户"),
PASSWORD_ERROR(-4, "密码错误"),
EMPTY_USERNAME(-5, "用户名为空"),
EMPTY_PASSWORD(-6, "密码为空"),
SUCCESS(0, "success"),
SYSTEM_ERROR(-1000001,"系统错误");

private Integer code;

private String msg;

private ResultEnum(Integer code, String msg) {
    this.code = code;
    this.msg = msg;
}

public Integer getCode() {
    return code;
}

public String getMsg() {
    return msg;
}

}

3,对于操作的结果返回不同的responseMessage,用了一个ResultUtil工具类解决。

/**

public static ResponseMessage success(Object object) {
    ResponseMessage responseMessage = new ResponseMessage();
    responseMessage.setCode(ResultEnum.SUCCESS.getCode());
    responseMessage.setMsg(ResultEnum.SUCCESS.getMsg());
    responseMessage.setData(object);
    return responseMessage;
}

/**
 * 操作成功不返回消息
 * @return
 */
public static ResponseMessage success() {
    return success(null);
}

/**
 * 操作失败返回的消息
 * @param code
 * @param msg
 * @return
 */
public static ResponseMessage error(int code,String msg) {
    ResponseMessage responseMessage = new ResponseMessage();
    responseMessage.setCode(code);
    responseMessage.setMsg(msg);
    return responseMessage;
}

/**
 * 操作失败返回消息,对error的重载
 * @param resultEnum
 * @return
 */
public static ResponseMessage error(ResultEnum resultEnum){
    ResponseMessage responseMessage = new ResponseMessage();
    responseMessage.setCode(resultEnum.getCode());
    responseMessage.setMsg(resultEnum.getMsg());
    return responseMessage;
}

}
4,自定义的异常类
public class MyException extends RuntimeException {

private int code;

private String errMsg;

public  MyException(ResultEnum resultEnum){
    this.code = resultEnum.getCode();
    this.errMsg = resultEnum.getMsg();
}

public Integer getCode() {
    return code;
}

public void setCode(Integer code) {
    this.code = code;
}

}

5,接下来就是对异常的处理,所有异常用一个@ControllerAdvice的类进行处理。
/**

}

上一篇 下一篇

猜你喜欢

热点阅读