异常处理
2016-04-11 00:00
441 查看
摘要: SpringMVC异常处理
通过SpringMVC HandlerExceptionResolver来处理异常
处理的异常主要包含:Handler映射、数据绑定、目标方法执行时异常
常用的实现类:
DispatcherServlet默认装配了HandlerExceptionResolver
使用 mvc:annotation-driven/配置:
ExceptionHandlerExceptionResolver具体使用:
主要处理Handler中用@ExceptionHandler注解定义的方法
1.局部的处理方式:目标处理器方法级的
(1)在目标处理器中,添加如下方法:
说明:
该方法的入参中可以加入Exception类型的参数,该参数即为发生异常时对应的Exception
若想页面中获取该异常信息,则需要返回ModelAndView对象
(2)优先级
异常范围从小到大去匹配。
(3)此种处理方式只能处理当前处理器中处理方法抛出的异常。
2.全局的处理方式
查找过程:
ExceptionHandlerExceptionResolver方法内查找@ExceptionHandler标记的方法是否符合当前异常,
若找不到,则会去全局的@ControllerAdvice标记的类中查找@ExceptionHandler标记的方法。
不常用的:
ResponseStatusExceptionResolver具体使用:
作用在异常类上:
抛出该异常时,会在页面展示对应的状态码和原因。
DefaultHandlerExceptionResolver:
对特殊异常进行处理,具体异常参见:
DefaultHandlerExceptionResolver#doResolveException
SimpleMappingExceptionResolver:
通过springmvc配置文件中配置来解决异常:
其中 error 为对应的视图名称,返回的ModelMap中会添加exceptionAttribute对应值的属性。
通过SpringMVC HandlerExceptionResolver来处理异常
public interface HandlerExceptionResolver { ModelAndView resolveException( HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex); }
处理的异常主要包含:Handler映射、数据绑定、目标方法执行时异常
常用的实现类:
ExceptionHandlerExceptionResolver DefaultHandlerExceptionResolver ResponseStatusExceptionResolver SimpleMappingExceptionResolver
DispatcherServlet默认装配了HandlerExceptionResolver
使用 mvc:annotation-driven/配置:
ExceptionHandlerExceptionResolver ResponseStatusExceptionResolver DefaultHandlerExceptionResolver
ExceptionHandlerExceptionResolver具体使用:
主要处理Handler中用@ExceptionHandler注解定义的方法
1.局部的处理方式:目标处理器方法级的
(1)在目标处理器中,添加如下方法:
@ExceptionHandler({ArithmeticException.class}) public ModelAndView handleArithmeticException(Exception ex) { ModelAndView modelAndView = new ModelAndView("error"); modelAndView.addObject("exception", ex); return modelAndView; }
说明:
该方法的入参中可以加入Exception类型的参数,该参数即为发生异常时对应的Exception
若想页面中获取该异常信息,则需要返回ModelAndView对象
(2)优先级
异常范围从小到大去匹配。
(3)此种处理方式只能处理当前处理器中处理方法抛出的异常。
2.全局的处理方式
@ControllerAdvice public class HandleException { @ExceptionHandler({RuntimeException.class}) public ModelAndView ExceptionHandler(Exception ex) { ModelAndView mv = new ModelAndView("error"); mv.addObject("exception", ex); return mv; } }
查找过程:
ExceptionHandlerExceptionResolver方法内查找@ExceptionHandler标记的方法是否符合当前异常,
若找不到,则会去全局的@ControllerAdvice标记的类中查找@ExceptionHandler标记的方法。
不常用的:
ResponseStatusExceptionResolver具体使用:
作用在异常类上:
@ResponseStatus(value=HttpStatus.NOT_FOUND, reason="没有找到") public class MyException extends RuntimeException { private static final long serialVersionUID = 1L; }
抛出该异常时,会在页面展示对应的状态码和原因。
DefaultHandlerExceptionResolver:
对特殊异常进行处理,具体异常参见:
DefaultHandlerExceptionResolver#doResolveException
SimpleMappingExceptionResolver:
通过springmvc配置文件中配置来解决异常:
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> <property name="exceptionMappings"> <props> <prop key="java.lang.ArithmeticException">error</prop> </props> </property> <property name="exceptionAttribute">ex</property> </bean>
其中 error 为对应的视图名称,返回的ModelMap中会添加exceptionAttribute对应值的属性。
相关文章推荐
- SpringMVC框架基础知识总结(二)
- SpringMVC(三)异常处理
- 关于SpringMVC的异常中心DefaultExceptionHandler
- 【原创】遨游springmvc之HandlerExceptionResolver
- 线程相关
- 聊天室
- Java方法的重载
- springAOP自定义注解方式实现日志管理
- Servlet(Listener)
- SpringMVC Hibernate 框架 配置遇到的问题
- Java的concurrent包里面的CountDownLatch多线程然后必须等其它任务执行完毕
- java中==与equal()方法的区别
- java四种引用
- Java学习-046-日志抓取合并后排序问题解决方案之 --- log4j 二次定制,实现日志输出添加延时10ms
- struts2校验框架的一个坑
- struts2的jar包下载流程
- Mybatis 系列(1)—— JSP + Spring + Mybatis+Mysql 框架搭建
- eclipse如何终止对Android项目的调试
- java程序实现一个有趣的买啤酒问题
- 20145129 《Java程序设计》第6周学习总结