SpringBoot 统一异常处理的实现示例

 更新时间:2024年07月07日 08:38:02   作者:从零开始的-CodeNinja之路  
本文主要介绍了SpringBoot 统一异常处理的实现示例,目的就是在异常发生时,尽可能地减少破坏,下面就来介绍一下,感兴趣的可以了解一下

一. 概念

其实统一异常是运用了AOP(对某一类事情的集中处理)的思维,简单概括就是在我们进行前后端数据交互的时候,抛出的任何的异常都能够自动捕获然后抛出,不用程序员在敲代码时格外关注try catch语句。

其实统一异常处理非常简单,在实现时要加入类注解@ControllerAdvice(这是一个表示控制通知的注解,在接下来的统一异常处理也要运用到),并且有一点与统一数据返回不同的是,统一异常处理需要加上类注解@ResponseBody来确认返回的数据类型,然后在类中要进行捕获异常的方法上加上注解@ExceptionHandle即可。

二. 全局异常处理

处理全局异常代码如下:

import com.example.demo.model.Result;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;


 
@ControllerAdvice
@ResponseBody

public class ErrorAdvice {

	/**
	 * 全局异常处理
	 */
	@ExceptionHandler
	public Object handler(Exception e) {
		return Result.fail(e.getMessage());
	}
	
}

这样程序抛出异常的时候,就会被该异常处理方法所捕获,并且返回统一异常处理的结果(JSON格式)!

三. 处理特定异常

处理特定异常代码如下:

import com.example.demo.model.Result;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

@ResponseBody
@ControllerAdvice

public class ErrorAdvice {

	@ExceptionHandler
	public Object handler(Exception e) {
		return Result.fail(e.getMessage());
	}

	@ExceptionHandler
	public Object handler(NullPointerException e) {
		return Result.fail("发⽣NullPointerException:"+e.getMessage());
	}

	@ExceptionHandler
	public Object handler(ArithmeticException e) {
		return Result.fail("发⽣ArithmeticException:"+e.getMessage());
	}

}

当有多个异常通知时,匹配顺序为当前类及其⼦类向上依次匹配

进行统一异常处理的目的就是在异常发生时,尽可能地减少破坏,妥善处理,而不去影响其他部分程序的运行

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

相关文章

  • Java中不可变集合的实现方式

    Java中不可变集合的实现方式

    在 Java 编程中,不可变集合是指其内容在创建后不能被修改的集合,不可变集合在多线程编程中具有重要作用,因为它可以确保数据的一致性和安全性,在本文中,我们将深入探讨 Java 中如何实现不可变集合,具体的实现方式,需要的朋友可以参考下
    2025-05-05
  • Java生成随机时间的简单随机算法

    Java生成随机时间的简单随机算法

    今天小编就为大家分享一篇关于Java生成随机时间的简单随机算法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01
  • 详解Java的内置异常以及创建自定义异常子类的方法

    详解Java的内置异常以及创建自定义异常子类的方法

    这篇文章主要介绍了详解Java的内置异常以及创建自定义异常子类的方法,是Java入门学习中的基础知识,需要的朋友可以参考下
    2015-09-09
  • Java SPI模块化解耦的技术指南

    Java SPI模块化解耦的技术指南

    Java 的 Service Provider Interface (SPI) 是一种提供模块化和扩展性的方法,使得程序能够通过动态加载服务实现类来实现解耦,本文将详细介绍 Java SPI 的机制、应用场景及实现步骤,并通过示例代码展示如何使用 SPI,需要的朋友可以参考下
    2025-03-03
  • YGC过于频繁问题以及解决方案

    YGC过于频繁问题以及解决方案

    这篇文章主要介绍了YGC过于频繁问题以及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-04-04
  • 一文浅析SpringBoot3中的异步批量处理操作

    一文浅析SpringBoot3中的异步批量处理操作

    对于使用 Spring Boot 3 框架的开发者而言,掌握异步批量处理操作至关重要,本文将深入探讨 Spring Boot 3 中异步批量处理操作的方方面面,帮助各位开发者在实际项目中更好地应用这一强大功能
    2025-12-12
  • Java concurrency之锁_动力节点Java学院整理

    Java concurrency之锁_动力节点Java学院整理

    这篇文章主要为大家详细介绍了Java concurrency之锁的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • JPA之映射mysql text类型的问题

    JPA之映射mysql text类型的问题

    这篇文章主要介绍了JPA之映射mysql text类型的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10
  • Java中锁的实现和内存语义浅析

    Java中锁的实现和内存语义浅析

    这篇文章主要给大家介绍了关于Java中锁的实现和内存语义的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-11-11
  • java方法重写时需要注意的问题

    java方法重写时需要注意的问题

    大家好,本篇文章主要讲的是java方法重写时需要注意的问题,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12

最新评论