1、异常捕获处理器

  • @ControllerAdvice+@ExceptionHandler ```java @Slf4j @ControllerAdvice public class GlobalExceptionHandler {
  1. @ExceptionHandler(value = {ArithmeticException.class,NullPointerException.class})
  2. public String handleArithException(Exception e){
  3. log.error("异常是:{}",e.toString());
  4. return "login";
  5. }

}

<a name="caC5Y"></a>
### 2、自定义异常 

- @ResponseStatus自定义错误
```java
@ResponseStatus(value = HttpStatus.FORBIDDEN,reason = "用户太多了")
public class UserTooManyException extends RuntimeException {
}
  • 使用错误

    @GetMapping(value = {"/login","/"})
      public String loginPage(HttpServletRequest request){
          if (request != null){
              throw new UserTooManyException();
          }
          return "login";
      }
    

    image.png
    image.png
    image.png

    3、自定义异常处理器

  • @Component+实现接口HandlerExceptionResolver+设置优先级为最高@Order(value = Ordered.HIGHEST_PRECEDENCE)

    @Order(value = Ordered.HIGHEST_PRECEDENCE) // 最高优先级
    @Component
    public class CustomExceptionResolver implements HandlerExceptionResolver {
      @Override
      public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
          try {
              response.sendError(533,"这tm是我自定义的异常解析器");
          } catch (IOException e) {
              e.printStackTrace();
          }
          return new ModelAndView();
      }
    }
    

    image.png