SpringBoot配置GlobalExceptionHandler全局异常处理器案例

 更新时间:2021年06月29日 14:21:03   作者:strive_day  
这篇文章主要介绍了SpringBoot配置GlobalExceptionHandler全局异常处理器案例,通过简要的文章说明如何去进行配置以及使用,需要的朋友可以参考下

1. 创建全局异常处理器类GlobalExceptionHandler

@ControllerAdvice: 定义统一的异常处理类,捕获 Controller 层抛出的异常。如果添加 @ResponseBody 返回信息则为JSON格式,这样就不必在每个Controller中逐个定义AOP去拦截处理异常。
@RestControllerAdvice: 相当于 @ControllerAdvice 与 @ResponseBody 的结合体。
@ExceptionHandler: 统一处理一种类的异常,减少代码重复率,降低复杂度。

@ControllerAdvice
public class GlobalExceptionHandler {
    //@ExceptionHandler 该注解声明异常处理方法,  ModelAndView mv
    @ExceptionHandler(value = Exception.class)
    public ModelAndView myHandler(Exception e, HttpServletRequest request, HttpServletResponse response) {
        System.out.println("GlobalExceptionHandler全局异常处理器捕获");
        ModelAndView mv = new ModelAndView();

        mv.addObject("message", e.getMessage());         //异常错误信息提示
        mv.addObject("url", request.getRequestURI());    //异常请求的url地址
        mv.addObject("status", response.getStatus());    //获取状态码
        mv.setViewName("/pages/exception/error");    //异常的视图名称
        return mv;
    }
}

【注意】基于@ControllerAdvice注解的全局异常统一处理只能针对于Controller层的异常。也就是只能捕获到Controller层的异常,在service层或者其他层面的异常都不能捕获。

2. 创建controller测试出现异常情况

    //测试异常处理
    @GetMapping(path = "/exception")
    public String toException() {
        System.out.println("toException");
        //throw new Exception();
        int i =1/0;
        System.out.println("toException end");
        
        return "/pages/company/company_list";
    }

编写html页面显示错误信息

<!-- 统一异常处理页面 -->
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org" >
<head>
	<title>出现错误啦</title>
</head>
<body>
<div class="content-container">
    <div class="head-line">
        <img src="../img/error.jpg" alt="" width="120"/>
    </div>
    <div class="subheader">
        <span name="message" th:text="${status}"/>,页面走丢啦<br/>
        <p style="font-size: 16px">
            原因:<font color="red" size="20px"><span name="message" th:text="${message}"/></font><br/>
            地址:<a th:href="${url}" rel="external nofollow" ><span name="url" th:text="${url}"/></a><br/>
        </p>

    </div>
    <div class="hr"></div>
    <div class="context">

        <p>您可以返回上一页重试,或直接向我们反馈错误报告
            <br/>
            联系地址:<a href="https://striveday.blog.csdn.net/" rel="external nofollow"  >String_day</a><br/>
            联系电话:<span>18828886888</span>
        </p>

    </div>
</body>
</html>

访问错误查看跳转页面

http://localhost:8000/OnlineMall/page/exception

在这里插入图片描述

在这里插入图片描述

到此这篇关于SpringBoot配置GlobalExceptionHandler全局异常处理器案例的文章就介绍到这了,更多相关SpringBoot配置GlobalExceptionHandler内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • JAVA读取PDF、WORD文档实例代码

    JAVA读取PDF、WORD文档实例代码

    本篇文章主要通过实例代码介绍了JAVA读取PDF、WORD文档,需要的朋友可以参考下
    2017-04-04
  • Springboot分页插件使用实例解析

    Springboot分页插件使用实例解析

    这篇文章主要介绍了Springboot分页插件使用实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • Java Buffer缓冲区(NIO)

    Java Buffer缓冲区(NIO)

    Java NIO(New IO)是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java IO API。本系列教程将有助于你学习和理解Java NIO。
    2021-09-09
  • SpringAOP中基于注解实现通用日志打印方法详解

    SpringAOP中基于注解实现通用日志打印方法详解

    这篇文章主要介绍了SpringAOP中基于注解实现通用日志打印方法详解,在日常开发中,项目里日志是必不可少的,一般有业务日志,数据库日志,异常日志等,主要用于帮助程序猿后期排查一些生产中的bug,需要的朋友可以参考下
    2023-12-12
  • Java Web项目创建并实现前后端交互

    Java Web项目创建并实现前后端交互

    本文主要介绍了Java Web项目创建并实现前后端交互,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • Maven打包jar生成javadoc文件和source文件代码实例

    Maven打包jar生成javadoc文件和source文件代码实例

    这篇文章主要介绍了Maven打包jar生成javadoc文件和source文件代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • Java线程间通讯的几种方法小结

    Java线程间通讯的几种方法小结

    线程通信可以用于控制并发线程的数量,本文主要介绍了Java线程间通讯的几种方法小结,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧
    2024-01-01
  • IDEA+Maven搭建Spring环境的详细教程

    IDEA+Maven搭建Spring环境的详细教程

    这篇文章主要介绍了IDEA+Maven搭建Spring环境的详细教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • 详解Springboot配置文件的使用

    详解Springboot配置文件的使用

    在springboot项目中,也可以使用yml类型的配置文件代替properties文件。接下来通过本文给大家分享Springboot配置文件的使用,感兴趣的朋友一起看看吧
    2017-07-07
  • SpringCloud Feign超详细讲解

    SpringCloud Feign超详细讲解

    Feign是Netflix公司开发的一个声明式的REST调用客户端; Ribbon负载均衡、 Hystrⅸ服务熔断是我们Spring Cloud中进行微服务开发非常基础的组件,在使用的过程中我们也发现它们一般都是同时出现的,而且配置也都非常相似
    2022-10-10

最新评论