首页 > 其他分享 >七、SpringMVC异常处理机制

七、SpringMVC异常处理机制

时间:2023-02-13 17:55:15浏览次数:37  
标签:处理 SpringMVC HandlerExceptionResolver 处理器 ModelAndView 机制 异常

异常处理的思路

系统中异常包括两类: 预期异常运行时异常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");
}

标签:处理,SpringMVC,HandlerExceptionResolver,处理器,ModelAndView,机制,异常
From: https://www.cnblogs.com/yellow-mokey/p/17117205.html

相关文章

  • [WPF]WPF全局异常处理
    WPF全局异常处理usingSystem;usingSystem.Threading.Tasks;usingSystem.Windows;usingSystem.Windows.Threading;namespaceWpfApplication1{///<summa......
  • 异常和异常处理
    异常和异常处理​​1、异常体系结构​​​​1.1什么是异常?​​​​1.2异常的分类​​​​1.3常见的异常和错误类型​​​​2、异常处理​​​​2.1try-catch-finally​......
  • 提高IT运维效率,深度解读京东云AIOps落地实践(异常检测篇(二))
    作者:张宪波、张静、李东江如何提高IT运维效率是众多运维人员的难题,这不仅是对内容繁杂、持续变化、支持不同的业务需求加以描述、加载和维护,更要对运维和业务运维需求、过程......
  • 提高IT运维效率,深度解读京东云AIOps落地实践(异常检测篇(二))
    作者:张宪波、张静、李东江如何提高IT运维效率是众多运维人员的难题,这不仅是对内容繁杂、持续变化、支持不同的业务需求加以描述、加载和维护,更要对运维和业务运维需求、过程......
  • Python缓存机制
    1.什么是缓存机制Python对象在创建的时候,会为其开辟一个内存,当变量引用该对象时,实际上是指向该对象的内存地址,当该对象不在被引用,会被垃圾回收机制回收,释放内存。但......
  • springmvc文件上传(ajax请求 带参数)
    前言这里用ajax文件上传,并携带几个参数,网上查到的大多都是没带参数只有文件的。由于我项目代码太多,这里只给出关键代码。操作我用的SSM框架,传之前,先在WEB-INF/dispatcherSe......
  • linux源码解析07–缺页异常之架构相关部分(ARM64为例)分析
    缺页异常:也叫缺页中断,页错误,是操作系统虚拟内存管理重要的一种机制,属于处理器的同步异常;访问虚拟内存的时候,虚拟地址和物理地址没有建立映射关系,或者有访问权限错误发生......
  • 异常处理机制
     抛出异常捕获异常异常处理五个关键字try、catch、finally、throw、throws快捷键(Ctrl+Alt+T) ......
  • SpringMVC工作流程
    1前端控制器dispatcherServlet接收到用户请求2dispathcherServlet调用处理器映射器handlerMapping3handlerMapping根据url找到对应处理器返回给dispatcherServlet(可......
  • springmvc拦截器的简单创建
    找到前端控制器配置文件; 配置拦截器:   实现接口,定义自己的规则: ......