1、异常捕获处理器
- @ControllerAdvice+@ExceptionHandler ```java @Slf4j @ControllerAdvice public class GlobalExceptionHandler {
@ExceptionHandler(value = {ArithmeticException.class,NullPointerException.class})
public String handleArithException(Exception e){
log.error("异常是:{}",e.toString());
return "login";
}
}
<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"; }
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(); } }