七、SpringMVC异常处理机制

异常处理的思路

系统中异常包括两类: 预期异常运行时异常RuntimeException,前者通过捕获异常从而获取异常信息,后者主要通过规范代码开发、测试等手段减少运行时异常的发生。
系统的Dao、 Service、 Controller出现都通过throws Exception向上抛出,最后由SpringMVC前端控制器交由异常处理器进行异常处理,如下图:
image

异常处理两种方式

  • 使用Spring MVC提供的简单异常处理器SimpleMappingExceptionResolver
  • 实现Spring的异常处理接口HandlerExceptionResolver 自定义自己的异常处理器

简单异常处理器SimpleMappingExceptionResolver

SpringMVC已经定义好了该类型转换器,在使用时可以根据项目情况进行相应异常与视图的映射配置

<!--配置简单映射异常处理器-->
<bean class=“org.springframework.web.servlet.handler.SimpleMappingExceptionResolver”>
	<property name=“defaultErrorView” value=“error”/> <!--默认错误视图-->
	<property name=“exceptionMappings”>
		<map>
			<entry key="com.study.exception.MyException" value="error"/><!--异常类型 错误视图-->
			<entry key="java.lang.ClassCastException" value="error"/>
		</map>
	</property>
</bean>

自定义异常处理步骤

① 创建异常处理器类实现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;
	}
}

配置异常处理器

<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>

测试异常跳转

@RequestMapping("/quick22")
@ResponseBody
public void quickMethod22() throws IOException, ParseException {
	SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
	simpleDateFormat.parse("abcde");
}
posted @ 2023-02-13 17:49  wandoubaguo  阅读(31)  评论(0编辑  收藏  举报