SpringMVC异常处理机制
1.1 异常处理的思路
请求
异常
请求 请求 请求
异常 异常
客户端 前端控制器 Controller Service Dao
HandlerExceptionResolver 异常处理器
系统中异常包括两类: 预期异常 和 运行时异常RuntimeException ,前者通过捕获异常从而获取异常信息,后 者主要通过规范代码开发、测试等手段减少运行时异常的发生。
系统的 Dao 、 Service 、 Controller 出现都通过throws Exception向上抛出,最后由SpringMVC前端控制器交 由异常处理器进行异常处理,如下图:
1.2 异常处理两种方式
使用Spring MVC提供的简单异常处理器SimpleMappingExceptionResolver 实现Spring的异常处理接口HandlerExceptionResolver自定义自己的异常处理器
1.3 简单异常处理器SimpleMappingExceptionResolver
SpringMVC已经定义好了该类型转换器,在使用时可以根据项目情况进行相应异常与视图的映射配置
<!-- 配置简单映射异常处理器 --> < bean class=“org.springframework.web.servlet.handler.SimpleMappingExceptionResolver” > < property name=“defaultErrorView” value=“error” /> 默认错误视图 < property name=“exceptionMappings” > < map > 异常类型 错误视图 < entry key="com.itheima.exception.MyException" value="error" /> < entry key="java.lang.ClassCastException" value="error" /> </ map > </ property > </ bean >
1.4 自定义异常处理步骤
① 创建异常处理器类实现HandlerExceptionResolver ② 配置异常处理器 ③ 编写异常页面 ④ 测试异常跳转
① 创建异常处理器类实现HandlerExceptionResolver
public class MyExceptionResolver implements HandlerExceptionResolver { @Override public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) { // 处理异常的代码实现 // 创建 ModelAndView 对象 ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName( "exceptionPage" ); return modelAndView; } }
1.4 自定义异常处理步骤
② 配置异常处理器
< bean id="exceptionResolver" class="com.itheima.exception.MyExceptionResolver" />
③ 编写异常页面
<%@ page contentType =" text/html;charset=UTF- 8 " language =" java " %> < html > < head > < title >Title</ title > </ head > < body > 这是一个最终异常的显示页面 </ body > </ html >
1.4 自定义异常处理步骤
④ 测试异常跳转
@RequestMapping( "/quick22" ) @ResponseBody public void quickMethod22() throws IOException, ParseException { SimpleDateFormat simpleDateFormat = new SimpleDateFormat( "yyyy-MM-dd" ); simpleDateFormat.parse( "abcde" ); }
1.4 自定义异常处理步骤
异常处理方式
配置简单异常处理器SimpleMappingExceptionResolver 自定义异常处理器
1.5 知识要点
自定义异常处理步骤
① 创建异常处理器类实现HandlerExceptionResolver ② 配置异常处理器 ③ 编写异常页面 ④ 测试异常跳转