Sping Boot全局异常捕捉

2024-05-29 20:36
文章标签 全局 异常 boot 捕捉 sping

本文主要是介绍Sping Boot全局异常捕捉,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

在日常项目开发中,异常是常见的,但是如何更高效的处理好异常信息,然我们能快速定位到BUG,是很重要的,不经能够提高我我们的开发效率,还能让代码看起来更加舒服。Spring Boot的项目已经有一定的异常处理,但是对于开发者而言就不太合适,因此我们需要对这些异常进行统一的捕获并且处理。

一、全局异常处理方式

SpringBoot中,@ControllerAdvice即可开启全局异常处理,使用该注解表示开启了全局异常的捕捉,我们只需要在自定义一个方法使用@ExceptionHandler注解然后定义捕捉异常的类型即可对这些捕获的异常进行统一的处理。

@ControllerAdvice
public class MyExceptionHandler {@ExceptionHandler(value =Exception.class)@ResponseBodypublic String exceptionHandler(Exception e){System.out.println("全局异常捕获>>>:"+e);return "全局异常捕获,错误原因>>>"+e.getMessage();}
}



二、全局异常处理方式        

2.1全局异常处理

@RestControllerAdvice
@Slf4j
public class GlobalExceptionHandler {//    Exception.class 指定了这个方法能够处理所有继承自 Exception 类的异常。@ExceptionHandler(Exception.class)public Result<?> exceptionHandler(Exception e) {log.error("系统异常 ", e);return Result.error(e.getMessage(), ErrorCode.SYSTEM_ERROR);}}

2.2定义异常信息数据结构

@Data
public class Result<T> implements Serializable {private Integer code; //编码:1成功,0和其它数字为失败private String msg; //错误信息private T data; //数据private String status;//状态public static <T> Result<T> success() {Result<T> result = new Result<T>();result.code = 20000;result.status= "ok";return result;}public static <T> Result<T> success(T object) {Result<T> result = new Result<T>();result.data = object;result.code = 20000;result.status= "ok";return result;}public static <T> Result<T> error(String msg, ErrorCode systemError) {Result result = new Result();result.msg = msg;result.code = 0;result.status= "fail";return result;}
}

2.3定义状态码

public enum ErrorCode {SYSTEM_ERROR(50000, "系统内部异常");private final int code;/*** 信息*/private final String message;ErrorCode(int code,String message){this.code  = code;this.message = message;}public int getCode() {return code;}public String getMessage() {return message;}
}

这篇关于Sping Boot全局异常捕捉的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1014580

相关文章

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热

Java对异常的认识与异常的处理小结

《Java对异常的认识与异常的处理小结》Java程序在运行时可能出现的错误或非正常情况称为异常,下面给大家介绍Java对异常的认识与异常的处理,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参... 目录一、认识异常与异常类型。二、异常的处理三、总结 一、认识异常与异常类型。(1)简单定义-什么是

Python主动抛出异常的各种用法和场景分析

《Python主动抛出异常的各种用法和场景分析》在Python中,我们不仅可以捕获和处理异常,还可以主动抛出异常,也就是以类的方式自定义错误的类型和提示信息,这在编程中非常有用,下面我将详细解释主动抛... 目录一、为什么要主动抛出异常?二、基本语法:raise关键字基本示例三、raise的多种用法1. 抛

Spring Boot 整合 Apache Flink 的详细过程

《SpringBoot整合ApacheFlink的详细过程》ApacheFlink是一个高性能的分布式流处理框架,而SpringBoot提供了快速构建企业级应用的能力,下面给大家介绍Spri... 目录Spring Boot 整合 Apache Flink 教程一、背景与目标二、环境准备三、创建项目 & 添

Java空指针异常NullPointerException的原因与解决方案

《Java空指针异常NullPointerException的原因与解决方案》在Java开发中,NullPointerException(空指针异常)是最常见的运行时异常之一,通常发生在程序尝试访问或... 目录一、空指针异常产生的原因1. 变量未初始化2. 对象引用被显式置为null3. 方法返回null

在Spring Boot中实现HTTPS加密通信及常见问题排查

《在SpringBoot中实现HTTPS加密通信及常见问题排查》HTTPS是HTTP的安全版本,通过SSL/TLS协议为通讯提供加密、身份验证和数据完整性保护,下面通过本文给大家介绍在SpringB... 目录一、HTTPS核心原理1.加密流程概述2.加密技术组合二、证书体系详解1、证书类型对比2. 证书获

Spring Boot中的YML配置列表及应用小结

《SpringBoot中的YML配置列表及应用小结》在SpringBoot中使用YAML进行列表的配置不仅简洁明了,还能提高代码的可读性和可维护性,:本文主要介绍SpringBoot中的YML配... 目录YAML列表的基础语法在Spring Boot中的应用从YAML读取列表列表中的复杂对象其他注意事项总

Spring Boot 整合 Redis 实现数据缓存案例详解

《SpringBoot整合Redis实现数据缓存案例详解》Springboot缓存,默认使用的是ConcurrentMap的方式来实现的,然而我们在项目中并不会这么使用,本文介绍SpringB... 目录1.添加 Maven 依赖2.配置Redis属性3.创建 redisCacheManager4.使用Sp

redis在spring boot中异常退出的问题解决方案

《redis在springboot中异常退出的问题解决方案》:本文主要介绍redis在springboot中异常退出的问题解决方案,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴... 目录问题:解决 问题根源️ 解决方案1. 异步处理 + 提前ACK(关键步骤)2. 调整Redis消费者组

springboot项目redis缓存异常实战案例详解(提供解决方案)

《springboot项目redis缓存异常实战案例详解(提供解决方案)》redis基本上是高并发场景上会用到的一个高性能的key-value数据库,属于nosql类型,一般用作于缓存,一般是结合数据... 目录缓存异常实践案例缓存穿透问题缓存击穿问题(其中也解决了穿透问题)完整代码缓存异常实践案例Red