SpringBoot全局异常捕获
使用到的技能
@RestControllerAdvice或(@ControllerAdvice+@ResponseBody)
@ExceptionHandler
代码实现
统一返回入口
自定义异常
全局异常处理
统一返回入口Result
/**
-
@ClassName Result
-
@Description 统一返回格式
-
@Author chaoba
-
@Version V1.0
*/
@Data
public class Result{
private int code;
private String msg;
private T data;/**
- 成功时候的调用
*/
public staticResult success(T data) {
Resultresult = new Result (CodeMsg.SUCCESS);
result.setData(data);
return result;
}
/**
- 成功时候的调用
*/
public staticResult successMsg(String msg) {
return new Result(200, msg);
}
/**
- 失败时候的调用
*/
public staticResult errorCodeMsg(CodeMsg codeMsg) {
return new Result(codeMsg);
}
/**
- 成功时候的调用
*/
public staticResult successCodeMsg(CodeMsg codeMsg) {
return new Result(codeMsg);
}
public static
Result error(T data) {
Resultresult = new Result (CodeMsg.FAIL);
result.setData(data);
return result;
}/**
- 失败时候的调用
*/
public staticResult errorMsg(String msg) {
return new Result(0, msg);
}
/**
- 全部参数
- @param
- @param
- @return
*/
public staticResult getResult() {
return new Result();
}
public static
Result toAjaxResult(int rows) {
return rows > 0 ? success(null) : error(null);
}public static
Result toAjaxResult(boolean rows) {
return rows ? success(null) : error(null);
}private Result(T data) {
this.data = data;
}private Result() {
}private Result(int code, String msg) {
this.code = code;
this.msg = msg;
}private Result(CodeMsg codeMsg) {
if (codeMsg != null) {
this.code = codeMsg.getCode();
this.msg = codeMsg.getMsg();
}
} - 成功时候的调用
}
自定义异常
/**
-
@ClassName GlabalException
-
@Description 全局异常
-
@Author chaoba
-
@Version V1.0
*/
@Data
public class GlabalException extends RuntimeException {
//错误状态码
private int code;public GlabalException(int code) {
this.code = code;
}public GlabalException(String message, int code) {
super(message);
this.code = code;
}public GlabalException(CodeMsg codeMsg) {
super(codeMsg.getMsg());
this.code = codeMsg.getCode();
}public GlabalException(String message) {
super(message);
}public GlabalException(Throwable cause, int code) {
super(cause);
this.code = code;
}public GlabalException(GlabalException ex) {
super(ex);}
}
全局异常处理
/** -
@ClassName GlabalExceptionHandler
-
@Description 全局异常拦截,只提供接口-无需页面404等错误
-
@Author chaoba
-
@Version V1.0
*/
@RestControllerAdvice
public class GlabalExceptionHandler {
//拦截自定义异常
@ExceptionHandler(value = GlabalException.class)
public Result jsonErrorHandler(GlabalException e) {
Result
}
本文作者: 暮雪超霸