# 异常处理
这些注解只会将Controller层出现的异常捕获,并且中断Controller层原先执行的函数,并将异常处理后的结果直接作为response返回给浏览器
# 注解
- @ControllerAdvice 注明该类为Controller异常处理类
- @RestControllerAdavice 等于@ControllerAdvice + @RequestBody
- @ExceptionHandler 注明该方法处理哪一个异常
# 示例
# 普通式
@RestControllerAdvice
public class ControllerExceptionHandler {
@ExceptionHandler(value = Exception.class)
public String exception(Exception e){
return e.getMessage();
}
}
# 与参数校验结合
将统一异常处理与参数校验结合
@RestControllerAdvice
public class ControllerExceptionHandler {
@ExceptionHandler(MethodArgumentNotValidException.class)
public String argumentNotValid(MethodArgumentNotValidException e){
StringBuilder sb = new StringBuilder();
e.getBindingResult().getFieldErrors().forEach((error) -> {
sb.append(error.getDefaultMessage());
})
return sb.toString();
}
}