SpringMVC之异常的优雅处理机制@ControllerAdvice及@ExceptionHandler
这个@ControllerAdvice也是AOP的一种表现,面试AOP可以拿它来举例
这个接口是实现异常的 HandlerExceptionResolver
我们可以实现这个类来写异常
我们现在用的多的方式是注解
先写一个报错方法
//springMVC的异常处理机制(异常处理器)
// 注意:写在这里只会对当前controller类生效
@ExceptionHandler(ArithmeticException.class)//具体处理那个异常类 ,形参不能比这个小
public void handleException(ArithmeticException exception, HttpServletResponse response) {
// 异常处理逻辑
try {
response.getWriter().write(exception.getMessage());
} catch (IOException e) {
e.printStackTrace();
}
}
注意:形参不能比 异常小比异常小会报错,
我们打开浏览器
浏览器:
不用一个的搞全局的:
搞一个异常页面:
全局:
/**
* @author zhaoqiankun
* @since 2021-12-15 23:18
* 全局异常处理
* 可以让我们优雅的捕获所有Controller对象handler方法抛出的异常
*/
@ControllerAdvice
public class GlobalExceptionResolver {
@ExceptionHandler(ArithmeticException.class)
public ModelAndView handleException(ArithmeticException exception, HttpServletResponse response) {
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("msg", exception.getMessage());
modelAndView.setViewName("error");
return modelAndView;
}
}
重启tomcat发布访问
简单页面到时候美工可以修饰一下