SpringMVC异常处理机制
1.异常处理的思路
系统中异常包括两类: 预期异常
和运行时异常RuntimeException
,前者通过捕获异常
从而获取异常信息,后者主要通过规范代码开发、测试
等手段减少运行时异常的发生。
系统的Dao、 Service、 Controller
出现都通过throws Exception向上抛出
,最后由SpringMVC前端控制器交由异常处理器
进行异常处理,如下图:
2.异常处理的方式
- 使用Spring MVC提供的
简单异常处理器SimpleMappingExceptionResolver
- 实现Spring的
异常处理接口HandlerExceptionResolver
自定义异常处理器
3.简单异常处理器SimpleMappingExceptionResolver
SpringMVC已经定义好了该类型转换器,在使用时可以根据项目情况进行相应异常与视图的映射配置.
<!--配置springmvc 简单异常映射解析器-->
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<!--出现异常默认跳转页面-->
<property name="defaultErrorView" value="error"/>
<!--异常映射-->
<property name="exceptionMappings">
<map>
<!--出现类型转换异常,跳转到error.jsp-->
<entry key="java.lang.ClassCastException" value="error"/>
<!--出现IO异常,跳转到error.jsp-->
<entry key="java.io.IOException" value="error"/>
<!--自定义异常,跳转到error.jsp-->
<entry key="com.itspring.exception.MyException" value="error"/>
</map>
</property>
</bean>
4.自定义异常处理器
① 创建异常处理器类实现HandlerExceptionResolver
② 配置异常处理器
③ 编写异常页面
④ 测试异常跳转
5.自定义异常处理器步骤
1.创建异常处理器类实现HandlerExceptionResolver
public class OneExceptionResolver implements HandlerExceptionResolver {
public ModelAndView resolveException(HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse,
Object o,
Exception e) {
//处理异常的代码
System.out.println("object:" + o);
System.out.println("exception:" + e);
if (e instanceof ClassCastException) {
System.out.println("当前异常为类型转换异常!");
}
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("error");
return modelAndView;
}
}
2.配置自定义异常处理器
<!--配置自定义异常处理器-->
<bean id="oneExceptionResolver"
class="com.itspring.exceptionResolver.OneExceptionResolver"></bean>