Java SpringMVC的自定义异常类

 更新时间:2022年03月15日 15:43:43   作者:程序员阿红  
这篇文章主要为大家详细介绍了SpringMVC的自定义异常类,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助

1. 异常处理的思路

在java中,对于异常的处理一般有两种方式:

  • 一种在当前方法捕获处理(try-catch),这种处理方式会造成业务代码和异常处理代码的耦合。
  • 另一种是自己不处理,而是抛给调用者处理(throws),调用者在抛给它的调用者,也就是往上抛。这种方法的基础上,衍生除了SpringMVC的异常处理机制。

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

image-20220312170306527

2. 自定义异常处理器

步骤分析:

1.创建异常处理器类实现handlerExceptionResolver

2.配置异常处理器

3.编写异常页面

4.测试异常跳转

(1)创建异常处理器类实现handlerExceptionResolver

public class GlobalExeceptionResovler implements HandlerExceptionResolver {
    /**
     *
     * @param httpServletRequest
     * @param httpServletResponse
     * @param o:对应的处理器
     * @param e;实际抛出的异常对象
     * @return
     */
    @Override
    public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) {
        ModelAndView model = new ModelAndView();
        //具体的异常处理 产生异常后,跳转到一个最终的异常页面
        model.addObject("error",e.getMessage());//得到错误信息
        model.setViewName("error");
        return model;
    }
}

(2)在Spring的配置文件配置异常处理器

<!--    定义错误异常页面-->
    <bean id="globalExecptionResovler" class="com.weihong.excption.GlobalExeceptionResovler"/>
    

(3)编写异常页面

<html>
<head>
    <title>Title</title>
</head>
<body>
  <h2>这是一个错误页面</h2>
  <h5>错误信息为:${error}</h5>
</body>
</html>

(4)测试异常跳转

    @RequestMapping("/jumpErrorPage")
    public String jumpErrorPage(){
        int res = 10 / 0;
        return "success";
    }

(5)测试结果

image-20220312170744238

3. web的处理异常机制

  • 当请求状态为404或者500,指定页面跳转。
  • 在其web.xml配置如下:
<!--处理500异常-->
<error-page>
  <error-code>500</error-code>
  <location>/500.jsp</location>
</error-page>
<!--处理404异常-->
<error-page>
  <error-code>404</error-code>
  <location>/404.jsp</location>
</error-page>

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注脚本之家的更多内容! 

相关文章

  • SpringMVC中解决@ResponseBody注解返回中文乱码问题

    SpringMVC中解决@ResponseBody注解返回中文乱码问题

    这篇文章主要介绍了SpringMVC中解决@ResponseBody注解返回中文乱码问题, 小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • Java常用正则表达式验证工具类RegexUtils.java

    Java常用正则表达式验证工具类RegexUtils.java

    相信大家对正则表达式一定都有所了解和研究,这篇文章主要为大家分享了Java 表单注册常用正则表达式验证工具类,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • Java钩子方法概念原理详解

    Java钩子方法概念原理详解

    这篇文章主要介绍了Java钩子方法概念原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • java servlet手机app访问接口(三)高德地图云存储及检索

    java servlet手机app访问接口(三)高德地图云存储及检索

    这篇文章主要为大家详细介绍了java servlet手机app访问接口(三),高德地图云存储及检索,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • JAVA Vector源码解析和示例代码

    JAVA Vector源码解析和示例代码

    本文的学习方式是先对JAVA Vector有个整体认识,然后再学习它的源码,最后再通过实例来学会使用。
    2013-11-11
  • IDEA中使用Typora编辑md文件的方法

    IDEA中使用Typora编辑md文件的方法

    这篇文章主要介绍了IDEA中使用Typora编辑md文件的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • Java内部类_动力节点Java学院整理

    Java内部类_动力节点Java学院整理

    内部类是指在一个外部类的内部再定义一个类。下面通过本文给大家java内部类的使用小结,需要的朋友参考下吧
    2017-04-04
  • JAVA线程sleep()和wait()详解及实例

    JAVA线程sleep()和wait()详解及实例

    这篇文章主要介绍了JAVA线程sleep()和wait()详解及实例的相关资料,探讨一下sleep()和wait()方法的区别和实现机制,需要的朋友可以参考下
    2017-05-05
  • Java中GC与四种引用的关系详解

    Java中GC与四种引用的关系详解

    这篇文章主要介绍了Java中GC与四种引用的关系详解,Java 中一共有 4 种类型的引用 : StrongReference、 SoftReference、 WeakReference 以及 PhantomReference这 4 种类型的引用与 GC 有着密切的关系, 让我们逐一来看它们的定义和使用场景,需要的朋友可以参考下
    2023-09-09
  • 三道java新手入门面试题,通往自由的道路--多线程

    三道java新手入门面试题,通往自由的道路--多线程

    这篇文章主要为大家分享了最有价值的3道多线程面试题,涵盖内容全面,包括数据结构和算法相关的题目、经典面试编程题等,对hashCode方法的设计、垃圾收集的堆和代进行剖析,感兴趣的小伙伴们可以参考一下
    2021-07-07

最新评论