SpringBoot 异常响应的处理
一、前言
-
在前后端交互的模式中,前后端会统一规范返回数据的格式。但在生产环境中,由于系统异常或bug的原因可能会产生异常,导致无法返回规定的格式数据。 -
SpringBoot中规范数据的一个例子 定义R 类统一数据返回的格式 @Data
public class R {
private Boolean flag;
private Object data;
private String msg;
public R(Boolean flag) {
this.flag = flag;
}
public R(Boolean flag, Object data) {
this.flag = flag;
this.data = data;
}
}
@GetMapping
public R getAll() {
return new R(true, bookService.list());
}
-
根据R类返回规范数据 {
"flag": true,
"data": [
{
"id": 1,
"type": "java后端",
"name": "疯狂的SpringBoot讲义",
"description": "SpringBoot终极讲义"
},
],
"msg": null
}
二、@RestControllerAdvice 异常处理
@RestControllerAdvice 注解异常处理类。@ExceptionHandler 注解异常处理函数,根据异常类型进行处理,可以在异常处理函数内完成记录日志,通知管理员等操作。
@RestControllerAdvice
public class ProjectExceptionAdvice {
@ExceptionHandler
public R doException(Exception e) {
e.printStackTrace();
return new R("系统异常");
}
}
|