异常处理
- 异常需要处理,如果不处理,那么程序进行不下去
- 异常有很多,一些是需要catch的异常,不catch就抛出去
- 所以不管怎么样,都养解决。
- SpringMVC可以配置统一的异常处理器,controller可以抛出,service也可以抛出,dao层不建议抛出异常
- dao层异常——>service层接抛——>controller接抛——>统一异常处理器(各司其职,统一处理 )
步骤
- 创建自定义异常类
1 | public abstract class DemoException extends Exception{ |
2 | private String message; |
3 | |
4 | public DemoException(String message) |
5 | { |
6 | this.message = message; |
7 | } |
8 | public String getMessage() { |
9 | return message; |
10 | } |
11 | } |
- dao层方法抛出异常
- 创建并定义统一异常处理器
1 | @ExceptionHandler//声明这是处理异常的方法 |
2 | public ModelAndView resolveException(HttpServletRequest request,HttpServletResponse response,Object arg2,Excetion excetion){ |
3 | if(excetion instanceof DemoException){ |
4 | de=(DemoException)exception; |
5 | }else if{ |
6 | .... |
7 | }else if{ |
8 | .... |
9 | }else if{ |
10 | .... |
11 | } |
12 | } |
- 跳转目的页面,传递错误信息
1 | @ExceptionHandler//声明这是处理异常的方法 |
2 | public ModelAndView resolveException(HttpServletRequest request,HttpServletResponse response,Object arg2,Excetion excetion){ |
3 | ModelAndView mav=new ModelAndView(); |
4 | if(excetion instanceof DemoException){ |
5 | de=(DemoException)exception; |
6 | }else if{ |
7 | .... |
8 | } |
9 | mav.addObject("message", de.getMessage()); |
10 | mav.setViewName("error");//转到错误页面 |
11 | } |