Spring Boot 全局异常拦截配置
对于一些报错,我们希望向前端返回一个错误提示结果,手动在报错后发送是很不方便的,我们可以定义一个【全局异常处理handler
】来做这件事。
先来见见代码壳子:
1 2 3 4 5 6
| @Slf4j @ResponseBody @RestControllerAdvice public class GlobalExceptionHandler { }
|
对于要监听的异常报错,我们这么处理:
1 2 3 4 5 6 7 8 9
| @ExceptionHandler(BadRequestException.class)
@ResponseStatus(HttpStatus.BAD_REQUEST) public Result<String> badRequestException(BadRequestException e) { log.error("400 BadRequest: {}", e.getMessage()); return Result.error(400, e.getMessage()); }
|
示例中的响应体结构代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
|
@Data public class Result<T> {
private Integer code;
private String msg;
private T data;
public static <T> Result<T> success(T data) { var result = new Result<T>(); result.data = data; result.msg = "success"; result.code = 200; return result; }
public static <T> Result<T> success() { var result = new Result<T>(); result.data = null; result.msg = "success"; result.code = 200; return result; }
public static <T> Result<T> error(int code, String msg) { var result = new Result<T>(); result.code = code; result.msg = msg; return result; } }
|