異常的封裝
以全局異常處理
作爲錯誤的狀況下的返回值
必須帶有{code:"",msg:""}
同時結果集類必須包含:
{code:"",msg:""}
1、結果集封裝
public class Result<T> implements Serializable{
private static final long serialVersionUID = -20552077545148552L;
private String code;
private String message;
private T data;
public Result() {}
public Result(CodeMsgEnum codeMsgEnum) {
this.code = codeMsgEnum.getCode();
this.message = codeMsgEnum.getMessage();
}
public Result(CodeMsgEnum codeMsgEnum, T data) {
this.code = codeMsgEnum.getCode();
this.message = codeMsgEnum.getMessage();
this.data = data;
}
public Result(String code, String message, T data) {
this.code = code;
this.message = message;
this.data = data;
}
public static <T> Result<T> success(T data) {
return new Result(CodeMsgEnum.SUCCESS, data);
}
public static <T> Result<T> success() {
return new Result(CodeMsgEnum.SUCCESS,null);
}
public static <T> Result<T> error(CodeMsgEnum codeMsgEnum) {
return new Result(codeMsgEnum,null);
}
public static <T> Result<T> error(String code, String msg) {
return new Result(code, msg,null);
}
public static <T> Result<T> error(String msg) {
return new Result(CodeMsgEnum.SREVER_ERROR.getCode(), msg ,null);
}
}
2、異常類封裝
public class BusinessException extends RuntimeException {
private static final long serialVersionUID = 5858874149529785542L;
/**
* code
*/
private String code;
/**
* 異常信息
*/
private String message;
public BusinessException() {
}
/**
* 服務端未知異常
*
* @param message
*/
public BusinessException(String message) {
super(message);
this.code = CodeMsgEnum.SREVER_ERROR.getCode();
this.message = message;
}
public BusinessException(String message, Throwable cause) {
super(message, cause);
this.code = CodeMsgEnum.SREVER_ERROR.getCode();
this.message = message;
}
/**
* 返回常用異常類型:
* CodeMsgEnum 通用異常
* @param codeMsgEnum
*/
public BusinessException(CodeMsgEnum codeMsgEnum) {
super(codeMsgEnum.getMessage());
this.code = codeMsgEnum.getCode();
this.message = codeMsgEnum.getMessage();
}
/**
* 異常信息傳入:
* 方便每個業務系統定義各自內部異常
* @param code
* @param message
*/
public BusinessException(String code, String message) {
super(message);
this.code = code;
this.message = message;
}
}
3、通用異常枚舉類
public enum CodeMsgEnum {
/**
* 通用枚舉,各個系統模塊可
單獨編寫異常類
*/
SUCCESS("200", "成功"),
SREVER_ERROR("500", "服務器內部錯誤"),
UNKNOWN_ERROR("1000000", "未知錯誤"),
NO_FIND_REQUEST("1001404","找不到資源"),
NO_AUTHORIZE("1001401", "未授權"),
AUTHENTICATION_FAIL("1001403", "認證失敗"),
PARAMS_ERROR("1001400","請求參數不合法"),
private final String code;
private final String message;
CodeMsgEnum(String code, String message) {
this.code = code;
this.message = message;
}
public static CodeMsgEnum getCodeMsgEnumByCode(String code) {
for (CodeMsgEnum codeMsgEnum : CodeMsgEnum.values()) {
if (codeMsgEnum.code.equals(code)) {
return codeMsgEnum;
}
}
return null;
}
public String getCode() {
return code;
}
public String getMessage() {
return message;
}
}