spring boot 所有的Controller异常捕获
1. 创建一个Result类,作为对外部rest请求的统一回复类
public class Result {
private boolean success;
private String message;
private Object data;
private int totalSize;
private int dataSize;
public Result() {
}
public Result(boolean success, String message, Object data) {
this.success = success;
this.message = message;
this.data = data;
}
public Result(boolean success, String message, Object data, int totalSize, int dataSize) {
this.success = success;
this.message = message;
this.data = data;
this.totalSize = totalSize;
this.dataSize = dataSize;
}
public boolean isSuccess() {
return success;
}
public void setSuccess(boolean success) {
this.success = success;
}
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;
}
public int getTotalSize() {
return totalSize;
}
public void setTotalSize(int totalSize) {
this.totalSize = totalSize;
}
public int getDataSize() {
return dataSize;
}
public void setDataSize(int dataSize) {
this.dataSize = dataSize;
}
@Override
public String toString() {
return "Result{" +
"success=" + success +
", message='" + message + '\'' +
", data=" + data +
", totalSize=" + totalSize +
", dataSize=" + dataSize +
'}';
}
}
2. 新建一个类,GlobalExceptionHandler
@ControllerAdvice
public class GlobalExceptionHandler {
private static final Logger LOGGER = LoggerFactory.getLogger(GlobalExceptionHandler.class);
@ExceptionHandler(value = Exception.class)
@ResponseBody
public Result exceptionHandler(Exception ex) {
LOGGER.error("服务器异常", ex);
return new Result(false, "服务器异常", null);
}
}
上面这个类就是统一异常处理类,在业务逻辑中,就可以放心的写代码,不用管异常处理了,若发生了异常,会统一到异常处理类中去处理