SpringBoot实现统一异常处理

SpringBoot [ 统一响应&&异常处理&&日志输出 ] SpringBoot [ 2.统一响应&&异常处理&&日志输出 ] - 目录 文章目录1.统一响应1.1.ExceptionConstant类,Result类2.异常处理2.1.自定义异常2.2.全局异常处理器3.日志输出 SpringBoot服务搭建服务完毕,就可以写一下服务的CURD(增删改查),但是在此之前必须要把一个项目最基本组件完善起来 1.统一响应 我... 阅读详情

分享知识 传递快乐

 

Spring Boot 实现统一异常处理的方法主要有以下两种:

  • 使用@ControllerAdvice和@ExceptionHandler注解
  • 使用ErrorController类来实现

 

1、使用@ControllerAdvice和@ExceptionHandler注解

import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MaxUploadSizeExceededException;
import org.springframework.web.servlet.ModelAndView;

import com.xh.common.util.map.PageData;
import com.xh.common.util.result.Result;

@ControllerAdvice
public class LocalExceptionHandler {

	@ExceptionHandler(ResultException.class)
	@ResponseBody
	public Result handleResultException(ResultException e) {
		return Result.exception("500", "操作异常", e.getMessage());
	}
	
	@ExceptionHandler(MaxUploadSizeExceededException.class)
	public ModelAndView handleResultException(MaxUploadSizeExceededException e) {
		PageData.entityToMap(Result.exception("403", "上传文件过大"));
		return new ModelAndView("", PageData.getMap());
	}

	
	@ExceptionHandler(Exception.class)
	@ResponseBody
	public Result handleResultException(Exception e) {
		return Result.exception("500", "操作异常", e.getMessage());
	}

}

说明:

  1、注解@ControllerAdvice表示这是一个控制器增强类,当控制器发生异常就会被此拦截器被拦截。

  2、注解@ExceptionHandler 定义拦截的异常类,可以获取抛出的异常信息。这里可以定义多个拦截方法,拦截不同的异常类,并且可以获取抛出的异常信息,自由度更大。

 

2、使用ErrorController类来实现

@Controller
public class UserErrorController implements ErrorController {
    @Autowired
    private ErrorAttributes errorAttributes;

    @RequestMapping("/error")
    public String handleError(HttpServletRequest request){
        //错误详情
        ServletWebRequest servletWebRequest = new ServletWebRequest(request);
        Map<String, Object> errorAttributes = this.errorAttributes.getErrorAttributes(servletWebRequest, true);
        //根据状态码返回到对应页面
        Integer statusCode = (Integer) request.getAttribute("javax.servlet.error.status_code");
        if(statusCode == 400){
            return "/400";
        }else if(statusCode == 403){
            return "/403";
        }else if(statusCode == 404){
            return "/404";
        }else{
            return "/500";
        }
    }
    @Override
    public String getErrorPath() {
        return "/error";
    }
}

 

 

 

 

 

 

—————————
如有不足请留言指正
相互学习,共同进步

SpringBoot统一数据返回格式 & 统一异常处理 统一数据返回格式 & 统一异常处理 阅读详情

相关推荐

SpringBoot统一返回和统一异常处理

在 SpringBoot 项目中,统一返回和统一异常处理是非常常用的一环,它们能提高应用的可读性和可维护性,统一返回有助于保持代码一致性和规范性,在前后端联调时更加方便,统一异常处理,减少了代码冗余,对异常处理更加易于管理。

共同进步,共同学习。 1500

统一异常处理解决方案

在 Spring 项目中,我们可以通过如下三种常见方案来实现全局统一异常处理。 基于 SpringBoot 的全局统一异常处理,需要实现 ErrorController 接口。 基于 Spring AOP 实现全局统一异常处理。 基于 @ControllerAdvice 注解实现 Controller 层全局统一异常处理。

在路上的博客 9442

【SpringBoot笔记18】SpringBoot实现统一异常处理、统一结果响应、统一参数校验

在实际的项目开发过程中,当应用程序发生异常时,用户可以接收到友好的错误提示信息,而不是直接出现一大堆看不懂的错误信息,这就需要对应用程序的所有异常进行统一的处理,SpringBoot框架提供了统一异常处理的注解,通过相应的注解就可以捕获所有可能出现的异常信息。此外,在前后端分离的模式下,数据的交互都是采用JSON格式来传递的,如果每一个方法都返回不同格式的数据,这显然不太合适,所以,实际开发中都会将响应结果统一处理,并且对前后端传递的参数进行统一的校验。下面具体介绍如何实现三个统一。

✅ Java 开发工程师 2436

统一异常处理

我们也可以自定义编写一个异常类型,然后加入到统一异常处理类中,不过在业务中需要的位置,需要我们自己抛出。@Datatry {throw new CustomException(20001,"出现自定义异常");

路漫漫其修远兮,吾将上下而求索 1839

SpringBoot第14讲:SpringBoot 如何统一异常处理

本文是SpringBoot第14讲,SpringBoot接口如何对异常进行统一封装,并统一返回呢?以上文的参数校验为例,**如何优雅的将参数校验的错误信息统一处理并封装返回呢**

Jet_qi的博客 2233

Ubuntu22.04下3分钟搞定GitHub加速:SwitchHosts+小鱼工具保姆级配置指南

本文提供Ubuntu22.04下快速解决GitHub下载超时问题的保姆级教程,通过SwitchHosts图形化工具和小鱼一键换源工具实现高效加速。详细步骤包括环境准备、工具安装配置及验证方法,帮助开发者轻松优化GitHub访问速度,提升工作效率。

weixin_29258297的博客 564

Spring、SpringBoot统一异常处理的3种方法

使用统一异常处理,将这些重复的try-catch块抽取出来,这样使我们可以更专注于业务逻辑的处理,同时能够使得异常的处理有一个统一的控制。 一、HandlerExceptionResolver全局异常处理 使用全局异常处理器只需要两步: 1.实现HandlerExceptionResolver接口。 2.将实现类作为Spring Bean,这样Spring就能扫描到它并作为全局异常处理器加载。 二、Controller局部异常处理 三、@ControllerAdvice 如果单使用2中的@Exception

jike11231的博客 9054

注册电气工程师详细教材

注册电气工程师详细教材

qq_40844444的博客 4247

springboot异常统一处理_Spring Boot统一异常处理实践

摘要: SpringBoot异常处理。原文:Spring MVC/Boot 统一异常处理最佳实践作者:赵俊前言在 Web 开发中, 我们经常会需要处理各种异常, 这是一件棘手的事情, 对于很多人来说, 可能对异常处理有以下几个问题:什么时候需要捕获(try-catch)异常, 什么时候需要抛出(throws)异常到上层.在 dao 层捕获还是在 service 捕获, 还是在 controller...

weixin_39626409的博客 3292

《21天学通C++》阶段性成果测试题——hstring(手写string类)

总体考察了类的使用,缓冲区考察了指针和数组的使用、增删改查、考察编码思维、考察了类的重载。1.初始化子字符串的起始位置为-1,表示未找到,若buffer或findHstring为空,则返回-1。右边的字符串不为空,则分别获取母串和子串的长度(用循环),然后创建一个固定大小的数组。3.然后循环遍历寻找子串在母串中的起始位置,循环时可以通过两个长度相减,避免循环越界。2.如都不为空,则分别获取双方的字符串长度(用循环),然后。右边的字符串为空,则输出原来的字符串。是否为空,有一方为空则返回另一方。

立志成为炼丹师? 1265

Log4Shell漏洞复现:从原理到实战的完整指南

日志记录是软件开发中用于追踪应用状态和排查问题的关键技术。然而,当日志组件对用户输入进行不当解析时,可能引发严重的安全风险。Log4j2作为Java生态中广泛使用的日志框架,其Lookup功能允许在日志中动态插入变量,这一设计初衷虽为便利,却因递归解析机制埋下了隐患。攻击者通过构造特定的JNDI(Java命名和目录接口)查询字符串,可诱使应用加载并执行远程恶意代码,从而实现远程命令执行。这种漏洞的价值在于其极低的利用门槛和极高的潜在危害,常被用于渗透测试和安全评估中,以验证系统的防御能力。本文以CVE-20

weixin_30496999的博客 275

SpringBoot之统一异常处理

详解SpringBoot统一异常处理,并结合源码剖析为什么有多个符合的异常处理方法时能匹配到最合适的异常处理方法,以及统一异常处理的优点。

. 1万+

用AList挂载网盘,无损看VR电影教程,无需下载到PICO头显本地!

用AList挂载网盘 + WebDAV直连头显,看片像拉本地一样流畅,不怕卡顿、不怕没空间,简直是VR看片刚需配置!别再用U盘传电影了,用AList + WebDAV,直接流畅看4K,看片效率翻倍,体验提升一个档次!

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 5541

SpringBoot统一异常处理详解

Spring Boot后端接口规范Spring在3.2版本增加了一个注解,可以与、、等注解注解配套使用。不过跟异常处理相关的只有注解,从字面上看,就是异常处理器的意思**Assert(断言)**是Spring 家族的,在我们写测试用例的时候经常会用到,使用断言能让我们编码的时候有一种非一般丝滑的感觉Assert的部分源码,可以看到,Assert 其实就是帮我们把 if {…} 封装了一下,抛出的异常是} } }

Shawn的个人博客 1万+

如何在Ubuntu 22.04系统上安装CUDA 12.9

本文提供Ubuntu22.04系统上安装CUDA12.9的简明指南:1)确认已安装适配575驱动;2)清理旧版本后安装必需依赖库;3)通过deb包方式添加英伟达源并安装CUDA12.9工具包;4)配置环境变量;5)通过nvcc-V和nvidia-smi命令验证安装。文中包含常见问题解决方法及多显卡使用说明,全程约需10分钟完成安装。

2501_93651177的博客 1480

Vue3 - 详细实现安装西瓜视频 xgplayer 插件详细配置及使用教程,利用西瓜视频播放器播放 mp4、flv、hls 格式视频文件及视频推流(直播或监控摄像头画面),支持移动端H5及PC网站!

vue3,nuxt3,西瓜视频,xgplayer,插件组件,xgplayer-hls,xgplayer-flv,xgplayer-mp4,播放视频点播和直播视频流,监控实时播放推流,倍速播放,在线flv在线推流地址,HLS播放,vue3西瓜播放器,vue如何使用西瓜视频插件做直播推流回流,视频点播,flv在线视频流播放,截图功能,自定义播放器样式,截屏,监控视频,vue3使用西瓜播放器播放flv、hls、mp4视频,截屏按钮,直播流,报错,黑屏,加载失败,苹果ios不兼容,重连,怎么改样式,很卡,详细教程,

🏆 前端领域优质创作者 1万+

SpringBoot统一结果返回,统一异常处理,大牛都这么玩

当实现统一结果返回时,需要创建一个通用的响应对象,定义成功和失败的返回情况,并确保在接口中使用这个通用返回对象。@Setter@Getter/*** 接口响应状态码*//*** 接口响应信息*//*** 接口响应的数据*/统一结果返回的关键之一是规定一套通用的状态码。这有助于客户端更容易地理解和处理 API 的响应,同时也为开发者提供了一致的标准。200 OK:表示成功处理请求。:表示成功创建资源。:表示成功处理请求,但没有返回任何内容。:客户端请求错误。:未授权访问。

攻城狮不是猫 2955

2025年新发表的语音大模型全双工模型/框架/技术

参考该论文,给出2025年新发表的全双工模型或框架或技术下面这份清单专挑、且与“全双工语音对话/同步对话(边听边说、可打断、回馈/相槌、重叠语音)”直接相关的。我也结合你提到的的四大维度(暂停处理、相槌、顺滑换手、打断管理)来点出它们各自的贡献点,便于后续评测与对比。

u013250861的博客 630

SpringBoot 如何进行 统一异常处理

首先,你需要根据自己的需求创建自定义的异常类。可以继承现有的异常类,比如RuntimeException,或者创建自己的异常类。自定义异常类应该包含错误码和错误消息等必要的信息。// 构造方法// getter和setter方法。

· 3602

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

springboot 监听所有异常_Spring Boot统一异常处理实践

摘要: SpringBoot异常处理。前言在 Web 开发中, 我们经常会需要处理各种异常, 这是一件棘手的事情, 对于很多人来说, 可能对异常处理有以下几个问题:什么时候需要捕获(try-catch)异常, 什么时候需要抛出(throws)异常到上层.在 dao 层捕获还是在 service 捕获, 还是在 controller 层捕获.抛出异常后要怎么处理. 怎么返回给页面错误信息.异常处理反...

weixin_32321921的博客 374

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

SpringBoot系列—统一功能处理(统一异常处理)

initHandlerMappings()方法负责完成请求控制器路由映射处理器的初始化,即该处理器会把请求的URL和控制器方法建立映射关系。如果有多个异常,就通过sort()方法排序,按异常的深度排序(ExceptionDepthComparator类表示异常深度比较器,比如Exception深度为1,那子类RuntimeException的深度就是2,RuntimeException子类NullPointerException的深度就为3),把深度最深的异常放在顺序表matches下标为0的地方。

sniper_fandc的博客 1280

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

SpringBoot基于统一返回结果类的统一异常处理

一、前话 看本文之前请先看《前后端分离开发:Spring Boot返回统一的数据格式》了解如何统一返回结果类。本文是基于统一返回结果类实现的统一异常处理。 二、什么是统一异常处理 在上述的另外一篇文章中,介绍了前后端分离中如何把后端的返回数据封装为统一的结果类。我们想让异常结果也显示为统一的返回结果对象,并且统一处理系统的异常信息,那么需要统一异常处理。这样从后端返回结果就真正意义上统一了。 1 为统一异常处理前的后端返回的默认异常信息 三、统一异常处理 1 分析 一般在微服务架构的应用中,有许多的

Java技术工坊 930

10.SpringBoot的统一异常处理详解

异常处理是程序在运行过程中遇到错误时的处理机制。在Web应用中,异常处理负责捕获和处理各种异常情况,并向客户端返回友好的错误信息。形象比喻: 想象异常处理就像医院的急诊科:Spring提供了多种异常处理方式:SpringBoot默认提供了基本的异常处理机制: 当访问这些端点时,SpringBoot会返回默认的错误信息,但这些信息对用户不够友好。可以通过配置文件定制默认错误页面: 3. 全局异常处理器 3.1 基础全局异常处理器 3.2 统一响应格式 为了保持响应格式的一致性,建议创建统一的响应类: 3.3

yk_dflkg的博客 1418

SpringBoot统一功能处理——统一异常处理

统一异常处理使用的是 @ControllerAdvice + @ExceptionHandler 来实现的,@ControllerAdvice 表示控制器通知类, @ExceptionHandler 是异常处理器,两个结合表示当出现异常的时候执行某个通知,也就是执行某个方法事件。

m0_60462557的博客 2807

SpringBoot——拦截器、统一结果返回、统一异常处理

(实现HandlerInterceptor接口)<2>

zhakakqns的博客 1363
上一篇: IDEA中配置tomcat8.5中文乱码问题
下一篇: Git实现SSH免密push、pull到Github
旷野历程
博客等级 码龄12年 3万+粉丝 415原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

旷野历程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值