Java 超详细讲解Spring MVC异常处理机制

 更新时间:2022年04月06日 11:57:52   作者:求不脱发  
Spring MVC中提供了一个通用的异常处理机制,它提供了一个成熟、简洁并且清晰的异常处理方案。当使用Spring MVC开发Web应用时,利用这套现成的机制进行异常处理也更加自然并且高效

异常处理机制流程图

系统中异常包括两类:

预期异常通过捕获异常从而获取异常信息。
运行时异常RuntimeException主要通过规范代码开发、测试等手段减少运行时异常的发生。

系统的Dao、Service、Controller出现都通过throws Exception向上抛出,最后SpringMVC前端控制器交由异常处理器进行异常处理,如下图:

异常处理的两种方式

  • 使用Spring MVC提供的简单异常处理器SimpleMappingExceptionResolver。这种方式简单快捷,使用方便。
  • 实现Spring的异常处理接口HandlerExceptionResolver 自定义自己的异常处理器。这种方式可根据具体的项目需求,提示对应的异常信息。

简单异常处理器SimpleMappingExceptionResolver

<bean 
class=“org.springframework.web.servlet.handler.SimpleMappingExceptionResolver”>
 <property name=“defaultErrorView” value=“error”/> <!-- 默认错误视图-->
 <property name=“exceptionMappings”> 
   <map> <!--异常类型 错误视图-->
    <entry key="com.project.exception.MyException" value="error"/>
    <entry key="java.lang.ClassCastException" value="error"/>
   </map>
 </property>
</bean>

自定义异常处理步骤

① 创建异常处理器类实现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.project.exception.MyExceptionResolver"/>

③ 编写异常页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>自定义异常界面</title>
</head>
 <body>
    自定义异常提示信息
 </body>
</html>

④ 测试异常跳转

@RequestMapping("/quick")
@ResponseBody
public void quickMethod22() throws IOException, ParseException {
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
    simpleDateFormat.parse("123456");
}

本章小结

异常处理方式

  • 配置简单异常处理器SimpleMappingExceptionResolver
  • 自定义异常处理器

自定义异常处理步骤

① 创建异常处理器类实现HandlerExceptionResolver

② 配置异常处理器

③ 编写异常页面

④ 测试异常跳转

到此这篇关于Java 超详细讲解Spring MVC异常处理机制的文章就介绍到这了,更多相关Java Spring MVC 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • JVM参数-Xms和-Xmx的作用及说明

    JVM参数-Xms和-Xmx的作用及说明

    这篇文章主要介绍了JVM参数-Xms和-Xmx的作用及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • Java jar打包工具使用方法步骤解析

    Java jar打包工具使用方法步骤解析

    这篇文章主要介绍了Java jar打包工具使用方法步骤解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • 探索Java中private方法添加@Transactional事务未生效原因

    探索Java中private方法添加@Transactional事务未生效原因

    你又遇到过明明给private方法添加了@Transactional但是事务依然没有生效的情况吗,具体原因本篇文章将详细告诉你,有需要的朋友跟着小编往下看吧
    2021-11-11
  • MyBatis中的自定义TypeHandler详解

    MyBatis中的自定义TypeHandler详解

    这篇文章主要介绍了MyBatis中的自定义TypeHandler详解,定义的 typeHandler 泛型为 String,显然我们要把数据库的数据类型转化为 String 型,然后实现设置参数和获取结果集的方法,需要的朋友可以参考下
    2023-07-07
  • Java使用entrySet方法获取Map集合中的元素

    Java使用entrySet方法获取Map集合中的元素

    这篇文章主要为大家详细介绍了Java使用entrySet方法获取Map集合中的元素,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-08-08
  • Java中的Semaphore信号量简析

    Java中的Semaphore信号量简析

    这篇文章主要介绍了Java中的Semaphore信号量简析,Semaphore:信号量,用来限制能同时访问共享资源的线程上限,使用Semaphore实现简单连接池,对比享元模式下的实现(用wait和notify),性能和可读性要更好,需要的朋友可以参考下
    2023-12-12
  • Java Session会话追踪原理深入分析

    Java Session会话追踪原理深入分析

    web开发阶段我们主要是浏览器和服务器之间来进行交互。浏览器和服务器之间的交互就像人和人之间进行交流一样,但是对于机器来说,在一次请求之间只是会携带着本次请求的数据的,但是可能多次请求之间是会有联系的,所以提供了会话机制
    2022-11-11
  • 看过就懂的java零拷贝及实现方式详解

    看过就懂的java零拷贝及实现方式详解

    这篇文章主要为大家详细的介绍了什么是零拷贝,传统的IO执行流程,零拷贝相关的知识点回顾,零拷贝实现的几种方式及java提供的零拷贝方式相关内容,有需要的朋友可以借鉴参考下
    2022-01-01
  • Java字节码操纵框架ASM图文实例详解

    Java字节码操纵框架ASM图文实例详解

    这篇文章主要为大家介绍了Java字节码操纵框架ASM图文实例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • JavaWeb项目实战之表白墙和在线相册

    JavaWeb项目实战之表白墙和在线相册

    这篇文章主要给大家介绍了关于JavaWeb项目实战之表白墙和在线相册的相关资料,JavaWeb表白墙是一款基于JavaWeb技术开发的表白墙应用,用户可以在上面发布表白信息,也可以查看其他用户的表白信息,需要的朋友可以参考下
    2023-03-03

最新评论