相关文章推荐
温柔的围巾  ·  js-audio-recorder ...·  7 月前    · 
小眼睛的充值卡  ·  VBA ...·  1 年前    · 
热心的楼梯  ·  local storage getitem ...·  1 年前    · 

【Web开发】Spring MVC 中的异常处理方法

简概

官方文档地址: docs.spring.io/spring-f

异常处理⽅法

  • 处理⽅法
    • @ExceptionHandler
  • 添加位置
    • @Controller / @RestController
    • @ControllerAdvice / @RestControllerAdvice
  1. @RestControllerAdvice 或者 @ControllerAdvice 类内的解析器的优先级低于 @Controller @RestController 类的解析器的优先级
  2. 如果一个异常能被多个解析器所处理,则选择继承关系最近的解析器

异常处理方法-@ExceptionHandler

@Controller和@ControllerAdvice类可以有@ExceptionHandler方法来处理来自控制器方法的异常,如下例所示:

@Controller
public class SimpleController {
    // ...
    @ExceptionHandler
    public ResponseEntity<String> handle(IOException ex) {
        // ...
}

异常可以匹配正在传播的顶级异常(例如抛出的直接IOException),也可以匹配包装器异常中的嵌套原因(例如包裹在IllegalStateException中的IOException)。在5.3中,这可以匹配任意的原因级别,而以前只考虑直接原因。

为了匹配异常类型,最好将目标异常声明为方法参数,如上例所示。当多个异常方法匹配时,根异常匹配通常优先于原因异常匹配。更具体地说,ExceptionDepthComparator用于根据抛出异常类型的深度对异常进行排序。

或者,通过注解的声明来缩小异常类型以匹配,如下例所示:

@ExceptionHandler({FileSystemException.class, RemoteException.class})