0


一张思维导图带你学会Springboot创建全局异常、自定义异常

🧑‍💻作者名称:DaenCode
🎤作者简介:啥技术都喜欢捣鼓捣鼓,喜欢分享技术、经验、生活。
😎人生感悟:尝尽人生百味,方知世间冷暖。
📖所属专栏:SpringBoot实战


在这里插入图片描述


文章目录

思维导图

在这里插入图片描述

🌟前言

在开发中,都离不开自定义异常、全局处理异常的使用。比如说在一些网站中看到的系统异常,请联系管理员、网络异常等等,都是通过其处理。如果按照下方图片中的信息展示给用户,谁能看的懂呢?于是这就体现出了自定义异常、全局处理异常的作用。

在这里插入图片描述

🌟前置知识

@ControllerAdvice

:用于标识一个全局异常处理类。

@ExceptionHandler

:用于标识全局异常处理类中的方法上,被标记的方法会在发生其特定异常时执行。

@RestControllerAdvice

:相当于@ControllerAdvice+@ResponseBody注解的组合。也就是一共有两种实现方式。

方式一:@ControllerAdvice+@ExceptionHandler+@ResponseBody
方式二:@RestControllerAdvice+@ExceptionHandler

执行流程

  • 当请求到达Controller时,通过AOP代理机制对Controller进行增强。
  • 在AOP增强的过程中,如果请求处理过程中发生异常,AOP拦截器会捕获异常,并将其- 传递给全局异常处理器。
  • 全局异常处理器根据异常类型进行匹配,并调用相应的异常处理方法进行处理。
  • 异常处理方法执行完毕后,返回结果给AOP拦截器,AOP拦截器将结果返回给原始的Controller方法或其他地方。

🌟具体实现步骤

定义自定义异常类

自定义异常类:负责返回特定信息的异常。在实际开发中会根据业务需求进行自定义异常类的划分:订单模块的异常、收货模块的异常,每个模块的异常又包含很多不同的异常码。

思路

  • 根据业务范围定义见名知意的类名称,比如说订单异常可以为OrderException。因举例我这里起的是SelfException。
  • 继承RuntimenException
  • 声明异常码、异常信息
  • 实现有参构造器。目的是为了在throw new XXXException时,自定义异常码、异常信息。
publicclassSelfExceptionextendsRuntimeException{//异常码privateInteger code;//异常信息privateString msg;//创建构造器,为了抛出自定义信息的异常publicSelfException(Integer code,String msg){this.code=code;this.msg=msg;}publicIntegergetCode(){return code;}publicvoidsetCode(Integer code){this.code = code;}publicStringgetMsg(){return msg;}publicvoidsetMsg(String msg){this.msg = msg;}}

定义全局异常处理类

全局异常处理类:负责捕获具体的异常或者全局异常,返回JSON格式数据给前端。
思路

  • 创建全局异常处理类。并用@RestControllerAdvice标识。
  • 创建异常处理方法。并用ExceptionHandler()标识此方法处理的异常。
  • 判断发生的异常是否是SelfException,若是则返回相应的异常码、异常信息。否则返回全局异常。
@RestControllerAdvicepublicclassSelfExceptionHandler{//捕获所有异常,若值为SelfException,则捕获SelfException@ExceptionHandler(Exception.class)publicJsonDatahandle(Exception e){//判断异常是否是自定义异常,若是则返回相应的异常码、异常信息。不是则返回全局异常。if(e instanceofSelfException){SelfException selfException=(SelfException) e;returnJsonData.buildError(selfException.getCode(), selfException.getMsg());}else{returnJsonData.buildError("系统异常,联系管理员");}}}

🌟写在最后

有关于SpringBoot自定义异常、全局处理异常到此就结束了。感谢大家的阅读,希望大家在评论区对此部分内容散发讨论,便于大家学到更多的知识。还有一张处理全局异常的方式是返回页面的方式,感兴趣的大家可以在网上搜搜,现在一般就是用返回JSON格式的进行处理。


请添加图片描述

标签: spring boot 后端 java

本文转载自: https://blog.csdn.net/2302_79094329/article/details/132017715
版权归原作者 DaenCode 所有, 如有侵权,请联系我们删除。

“一张思维导图带你学会Springboot创建全局异常、自定义异常”的评论:

还没有评论