Spring MVC 通过HandlerExcoptionResolver 处理程序异常,包括处理器异常、数据绑定异常以及处理器执行时发生的异常。
当发生异常时,Spring MVC 会调用 resolverExcoption()方法,并转到ModelAndView 对应的视图中,作为一个异常报告页面反馈给用户。
对于异常处理,我们一般分为局部异常处理和全局异常处理。
1、局部异常处理
局部异常处理,仅能处理指定的 Controller 中的异常,使用@ExceptionHandler 注解实现。
@ExceptionHandler(RuntimeException.class)
public String handlerEecoption(RuntimeException e,HttpServletRequest req){
req.setAttribute("e",e);
return "error";
}
2、全局异常处理
全局异常处理可以使用SimpleMapperExcoptionResolver 来实现,他将异常类名映射为视图名,即发生异常时使用对应的视图报告异常。
在 Spring MVC 配置文件中添加如下代码:
<!-- 全局异常处理 -->
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="exceptionMappings">
<props>
<!--可以定义多个异常-->
<prop key="java.lang.RuntimeException">error</prop>
</props>
</property>
</bean>