在开发过程中,我们不能用第一种定义错误页面方式来处理异常,
因为异常有很多种,我们也是要知道具体的页面异常才可以进行相关的操作
所以使用@ExceptionHandler 来做处理
------------------存在弊端 因为必须要和存在会产生异常的方法在同一个类
吐槽一下,我们又不是专门写Bug的...对我们是....
1.2.1修改 Controller
页面
使用@ExceptionHandler 来做处理异常过于麻烦,因为要写很多个这样的异常处理方法,不能复用,最重要的是,我们怎么知道我们写的这个类就会出bug...[\气愤]
这样做的好处有
1.代码复用,所有的类出了异常都会被捕捉处理
---------只能做异常视图映射不能传递异常信息
通过@ControllerAdvice 与@ExceptionHandler 注解处理异常 的话,有个弊端,就是要些很多个处理异常的方法
通过 SimpleMappingExceptionResolver 对象处理异常 --存在弊端-不能传递异常信息,所以需要通过自定义HandlerExceptionResolver 对象处理异常 来满足
1.5.1创建全局异常处理类
/**
* 自定义HandlerExceptionResolver对象处理异常
* 必须要实现HandlerExceptionResolver
*/
@Configuration
public class GlobalException3 implements HandlerExceptionResolver {
@Override
public ModelAndView resolveException(HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse,
Object handler, Exception e) {
ModelAndView mv = new ModelAndView();
//判断不同异常类型,做不同视图的跳转
if(e instanceof NullPointerException){
mv.setViewName("error5");
}
if(e instanceof ArithmeticException){
mv.setViewName("error6");
}
mv.addObject("error",e.toString());
return mv;
}
}
网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。
添加我为好友,拉您入交流群!
请使用微信扫一扫!