问题:程序员在项目开发过程中,遇到一些可以预测到的,但又无法避免的异常。这样会发送一堆前端人员看不懂的代码报错信息。
作用:统一捕获预测到的、无法避免的异常,封装给前台能够看懂的文字信息提示。
1、自定义异常类
/**
* @author liujianming
* @version 1.0
* @describe 自定义业务异常
* @date 2022/5/4 9:31
*/
public class BusinessException extends RuntimeException {
private Integer status;
public BusinessException(Integer status ,String message) {
super(message);
this.status = status;
}
public Integer getCode() {
return status;
}
}
2、全局捕获
/**
* @author liujianming
* @version 1.0
* @describe 全局异常
* @date 2022/5/19 0:16
*/
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(BusinessException.class)
@ResponseBody
public ResultUtil handle(BusinessException se) {
return ResultUtil.error(se.getCode(),se.getMessage());
}
}
3、统一响应Util
/**
* @author liujianming
* @version 1.0
* @describe 统一返回包装类
* @date 2022/5/21 12:54
*/
public class ResultUtil {
private static final long serialVersionUID = 1L;
private int status;
private String message;
private Object data;
public ResultUtil() {
}
public ResultUtil(int status, String message) {
this.status = status;
this.message = message;
}
public ResultUtil(int status, String message, Object data) {
this.status = status;
this.message = message;
this.data = data;
}
public static ResultUtil success() {
return new ResultUtil(0, "success", null);
}
public static ResultUtil success(Object data) {
return new ResultUtil(0, "success", data);
}
public static ResultUtil error(int status, String message) {
return new ResultUtil(status, message, null);
}
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}
}