参考文章:http://blog.csdn.net/yangcheng33/article/details/77104561
spring中带有的简单异常处理器
在spring mvc的xml中如下配置:
<!-- springmvc提供的简单异常处理器 -->
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<!-- 定义默认的异常处理页面 -->
<property name="defaultErrorView" value="default_error"/>
<!-- 定义异常处理页面用来获取异常信息的变量名,也可不定义,默认名为exception -->
<property name="exceptionAttribute" value="ex"/>
<!-- 定义需要特殊处理的异常,这是重要点 -->
<property name="exceptionMappings">
<props>
<prop key="com.exception.CustomException">error</prop>
</props>
<!-- 还可以定义其他的自定义异常 -->
</property>
</bean>
此方法比较简单,容易扩展自定义异常和展示页面。
注意:
1.关于上述需要跳转的error jsp相关的地址配置和controller中使用的Viewname一致。否则会找不到。
2.try catch和throws导致的区别
@RequestMapping("/gothrow")
public ModelAndView hello() throws CustomException{
if(1>0){
throw new CustomException("故意");
}
ModelAndView mv = new ModelAndView();
mv.setViewName("index");
return mv;
}
@RequestMapping("/trycatch")
public ModelAndView hello2(){
if(1>0){
try {
throw new CustomException("故意");
} catch (CustomException e) {
e.printStackTrace();
}
}
ModelAndView mv = new ModelAndView();
mv.setViewName("index");
return mv;
}
第一个方法throws出去,一直往外抛;但是在try中就会需要自己在catch中处理,抛不到spring框架来处理。所以,throws会走spring mvc的异常处理,跳转错误页面。但是try不会跳转到相关的页面。
未完待续…