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

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

思维导图


b9a91c0b95c04cd1a59eec8000d5c62a.png


🌟前言


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


24beca14437dcc912aedc0da2f64a5e7_01eb56de82ab4c089f68358b107a7779.png


🌟前置知识


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

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

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


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

方式二:@RestControllerAdvice+@ExceptionHandler


执行流程:

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


🌟具体实现步骤


定义自定义异常类


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


思路:

  • 根据业务范围定义见名知意的类名称,比如说订单异常可以为OrderException。因举例我这里起的是SelfException。
  • 继承RuntimenException。
  • 声明异常码、异常信息。
  • 实现有参构造器。目的是为了在throw new XXXException时,自定义异常码、异常信息。

public class SelfException extends RuntimeException{
    //异常码
    private Integer code;
    //异常信息
    private String msg;
    //创建构造器,为了抛出自定义信息的异常
    public SelfException(Integer code,String msg){
        this.code=code;
        this.msg=msg;
    }
    public Integer getCode() {
        return code;
    }
    public void setCode(Integer code) {
        this.code = code;
    }
    public String getMsg() {
        return msg;
    }
    public void setMsg(String msg) {
        this.msg = msg;
    }
}


定义全局异常处理类


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

思路:

  • 创建全局异常处理类。并用@RestControllerAdvice标识。
  • 创建异常处理方法。并用ExceptionHandler()标识此方法处理的异常。
  • 判断发生的异常是否是SelfException,若是则返回相应的异常码、异常信息。否则返回全局异常。


@RestControllerAdvice
public class SelfExceptionHandler {
//捕获所有异常,若值为SelfException,则捕获SelfException
    @ExceptionHandler(Exception.class)
    public JsonData handle(Exception e){
    //判断异常是否是自定义异常,若是则返回相应的异常码、异常信息。不是则返回全局异常。
        if (e instanceof SelfException){
            SelfException selfException=(SelfException) e;
            return JsonData.buildError(selfException.getCode(), selfException.getMsg());
        }else {
            return JsonData.buildError("系统异常,联系管理员");
        }
    }
}


🌟写在最后


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


目录
相关文章
|
4月前
|
SQL 监控 druid
springboot-druid数据源的配置方式及配置后台监控-自定义和导入stater(推荐-简单方便使用)两种方式配置druid数据源
这篇文章介绍了如何在Spring Boot项目中配置和监控Druid数据源,包括自定义配置和使用Spring Boot Starter两种方法。
|
3月前
|
并行计算 Java 数据处理
SpringBoot高级并发实践:自定义线程池与@Async异步调用深度解析
SpringBoot高级并发实践:自定义线程池与@Async异步调用深度解析
306 0
|
3月前
|
人工智能 自然语言处理 前端开发
SpringBoot + 通义千问 + 自定义React组件:支持EventStream数据解析的技术实践
【10月更文挑战第7天】在现代Web开发中,集成多种技术栈以实现复杂的功能需求已成为常态。本文将详细介绍如何使用SpringBoot作为后端框架,结合阿里巴巴的通义千问(一个强大的自然语言处理服务),并通过自定义React组件来支持服务器发送事件(SSE, Server-Sent Events)的EventStream数据解析。这一组合不仅能够实现高效的实时通信,还能利用AI技术提升用户体验。
303 2
|
1月前
|
NoSQL Java Redis
Spring Boot 自动配置机制:从原理到自定义
Spring Boot 的自动配置机制通过 `spring.factories` 文件和 `@EnableAutoConfiguration` 注解,根据类路径中的依赖和条件注解自动配置所需的 Bean,大大简化了开发过程。本文深入探讨了自动配置的原理、条件化配置、自定义自动配置以及实际应用案例,帮助开发者更好地理解和利用这一强大特性。
112 14
|
2月前
|
Dubbo Java 应用服务中间件
深入探讨了“dubbo+nacos+springboot3的native打包成功后运行出现异常”的原因及解决方案
本文深入探讨了“dubbo+nacos+springboot3的native打包成功后运行出现异常”的原因及解决方案。通过检查GraalVM版本兼容性、配置反射列表、使用代理类、检查配置文件、禁用不支持的功能、查看日志文件、使用GraalVM诊断工具和调整GraalVM配置等步骤,帮助开发者快速定位并解决问题,确保服务的正常运行。
72 1
|
2月前
|
安全 Java 应用服务中间件
如何将Spring Boot应用程序运行到自定义端口
如何将Spring Boot应用程序运行到自定义端口
88 0
|
4月前
|
Java Spring
springboot静态资源目录访问,及自定义静态资源路径,index页面的访问
本文介绍了Spring Boot中静态资源的访问位置、如何进行静态资源访问测试、自定义静态资源路径和静态资源请求映射,以及如何处理自定义静态资源映射对index页面访问的影响。提供了两种解决方案:取消自定义静态资源映射或编写Controller来截获index.html的请求并重定向。
springboot静态资源目录访问,及自定义静态资源路径,index页面的访问
|
3月前
|
Java API Spring
springBoot:注解&封装类&异常类&登录实现类 (八)
本文介绍了Spring Boot项目中的一些关键代码片段,包括使用`@PathVariable`绑定路径参数、创建封装类Result和异常处理类GlobalException、定义常量接口Constants、自定义异常ServiceException以及实现用户登录功能。通过这些代码,展示了如何构建RESTful API,处理请求参数,统一返回结果格式,以及全局异常处理等核心功能。
|
3月前
|
Java 关系型数据库 数据库连接
SpringBoot项目使用yml文件链接数据库异常
【10月更文挑战第3天】Spring Boot项目中数据库连接问题可能源于配置错误或依赖缺失。YAML配置文件的格式不正确,如缩进错误,会导致解析失败;而数据库驱动不匹配、连接字符串或认证信息错误同样引发连接异常。解决方法包括检查并修正YAML格式,确认配置属性无误,以及添加正确的数据库驱动依赖。利用日志记录和异常信息分析可辅助问题排查。
469 10
|
3月前
|
Java 关系型数据库 MySQL
SpringBoot项目使用yml文件链接数据库异常
【10月更文挑战第4天】本文分析了Spring Boot应用在连接数据库时可能遇到的问题及其解决方案。主要从四个方面探讨:配置文件格式错误、依赖缺失或版本不兼容、数据库服务问题、配置属性未正确注入。针对这些问题,提供了详细的检查方法和调试技巧,如检查YAML格式、验证依赖版本、确认数据库服务状态及用户权限,并通过日志和断点调试定位问题。
337 6