①统一返回结果
package com.ioc.exception;
import lombok.Data;
import java.io.Serializable;
/**
* 后端统一返回结果
* @param <T>
*/
@Data
//使用泛型对Result返回类进行了封装
public class Result<T> implements Serializable {
private Integer code; //编码:1成功,0和其它数字为失败
private String msg; //错误信息
private T data; //数据
public static <T> Result<T> success() {
Result<T> result = new Result<T>();
result.code = 1;
return result;
}
public static <T> Result<T> success(T object) {
Result<T> result = new Result<T>();
result.data = object;
result.code = 1;
return result;
}
public static <T> Result<T> error(Integer code,String msg) {
Result result = new Result();
result.msg = msg;
result.code = code;
return result;
}
}
②枚举类
package com.ioc.exception;
/**
* 枚举类
*/
public enum ExceptionMsg {
;
private Integer code;
private String msg;
public Integer getCode() {
return code;
}
public String getMsg() {
return msg;
}
ExceptionMsg(Integer code, String msg) {
this.code = code;
this.msg = msg;
}
}
③自定义异常类
package com.ioc.exception;
/**
* 业务异常
*/
public class BaseException extends RuntimeException {
private Integer code =500;
private String msg = "";
public BaseException(ExceptionMsg exceptionMsg) {
this.code=exceptionMsg.getCode();
this.msg = exceptionMsg.getMsg();
}
public BaseException(Integer code , String msg){
super();
this.msg=msg;
this.code=code;
}
public BaseException(String msg) {
super();
this.msg=msg;
}
public Integer getCode() {
return code;
}
public String getMsg() {
return msg;
}
}
④全局异常处理类
package com.ioc.exception;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
/**
* 全局异常处理器,处理项目中抛出的业务异常
*/
@RestControllerAdvice
@Slf4j
public class GlobalExceptionHandler {
/**
* 捕获业务异常
* @param ex
* @return
*/
@ExceptionHandler
public Result exceptionHandler(BaseException ex){
log.error("异常信息:{}", ex.getMessage());
return Result.error(ex.getCode(),ex.getMsg());
}
}