SpringBoot 处理异常的几种常见操作

SpringBoot异常处理机制之统一异常处理和自定义异常类 统一异常处理相关注解 @ControllerAdvice: 声明在类上用于指定该类为控制增强器类,如果想声明返回的结果为 RESTFull 风格的数据,需要在声明 @ExceptionHandler 注解的方法上同时加上 @ResponseBody @RestControllerAdvice: 声明在类上用于指定该类为控制增强器类。并声明返回的结果为 RESTFull 风格的数据,无需在声明 @ExceptionHandler 注解的方法上加 @ResponseBody @ExceptionHandler 阅读详情

1. 使用 @ControllerAdvice 和 @ExceptionHandler 处理全局异常

这是目前很常用的一种方式,非常推荐。测试代码中用到了 Junit 5,如果你新建项目验证下面的代码的话,记得添加上相关依赖。

1. 新建异常信息实体类

非必要的类,主要用于包装异常信息。

 

SpringBoot 处理异常的几种常见操作

 

 

2. 自定义异常类型

 

SpringBoot 处理异常的几种常见操作

 

 

3. 新建异常处理类

我们只需要在类上加上@ControllerAdvice注解这个类就成为了全局异常处理类,当然你也可以通过 assignableTypes指定特定的 Controller 类,让异常处理类只处理特定类抛出的异常。

src/main/java/com/twuc/webApp/exception/GlobalExceptionHandler.java

 

SpringBoot 处理异常的几种常见操作

 

 

4. controller模拟抛出异常

src/main/java/com/twuc/webApp/web/ExceptionController.java

 

SpringBoot 处理异常的几种常见操作

 

 

使用 Get 请求 localhost:8080/api/resourceNotFoundException[1] (curl -i -s -X GET url),服务端返回的 JSON 数据如下:

 

SpringBoot 处理异常的几种常见操作

 

 

5. 编写测试类

MockMvc 由org.springframework.boot.test包提供,实现了对Http请求的模拟,一般用于我们测试 controller 层。

 

SpringBoot 处理异常的几种常见操作

 

2. @ExceptionHandler 处理 Controller 级别的异常

我们刚刚也说了使用@ControllerAdvice注解 可以通过 assignableTypes指定特定的类,让异常处理类只处理特定类抛出的异常。所以这种处理异常的方式,实际上现在使用的比较少了。

我们把下面这段代码移到 src/main/java/com/twuc/webApp/exception/GlobalExceptionHandler.java 中就可以了。

 

SpringBoot 处理异常的几种常见操作

 

 

3. ResponseStatusException

研究 ResponseStatusException 我们先来看看,通过 ResponseStatus注解简单处理异常的方法(将异常映射为状态码)。

src/main/java/com/twuc/webApp/exception/ResourceNotFoundException.java

 

SpringBoot 处理异常的几种常见操作

 

src/main/java/com/twuc/webApp/web/ResponseStatusExceptionController.java

 

SpringBoot 处理异常的几种常见操作

 

 

使用 Get 请求 localhost:8080/api/resourceNotFoundException2[2] ,服务端返回的 JSON 数据如下:

 

SpringBoot 处理异常的几种常见操作

 

 

这种通过 ResponseStatus注解简单处理异常的方法是的好处是比较简单,但是一般我们不会这样做,通过ResponseStatusException会更加方便,可以避免我们额外的异常类。

 

SpringBoot 处理异常的几种常见操作

 

 

使用 Get 请求 localhost:8080/api/resourceNotFoundException2[3] ,服务端返回的 JSON 数据如下,和使用 ResponseStatus 实现的效果一样:

 

SpringBoot 处理异常的几种常见操作

 

 

ResponseStatusException 提供了三个构造方法:

 

SpringBoot 处理异常的几种常见操作

 

构造函数中的参数解释如下:

•status :http status

•reason :response 的消息内容

•cause :抛出的异常

更多相关资料可在素质三连之后私信“学习”免费获取

SpringBoot实战 之 异常处理篇 在互联网时代,我们所开发的应用大多是直面用户的,程序中的任何一点小疏忽都可能导致用户的流失,而程序出现异常往往又是不可避免的,那该如何减少程序异常对用户体验的影响呢?其实方法很简单,对异常进行捕获,然后给予相应的处理即可。但实现的方式却有好多种,例如:try { ... } catch (Exception e) { doSomeThing(); }像这种标准的 try-catch 阅读详情

相关推荐

SpringBoot 处理常见的几种异常处理, 使用全局异常统一处理

import com.oohad.oohadshowmanager.entity.JsonResult; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.http.converter.HttpMessageNotReadableException; i.

chishing943的博客 671

SpringBoot自定义异常类

一、使用枚举自定义异常类消息 import lombok.AllArgsConstructor; import lombok.NoArgsConstructor; /** * 异常消息 */ @AllArgsConstructor @NoArgsConstructor public enum CodeMsg { SUCCESS(200,"success"), SERVER_ERROR(500,"服务端异常"), Request_Error(404,"请求异常"),

smiling 2629

魔改xjar支持springboot3,

其实这里基本就没问题了,实际项目中只要把这个spring-core包从私仓中替换,项目加密也就没有太大的毛病,但是这样对于追求完美的我来说,方便性还差点。原因找到了,看了下springboot github的issue,官方确实变更了,原因是因为springboot2中的。xjar项目文档还是不错的,clone下来,跟着文档,很容易就测试并通过了我的测试项目,于是便推给其他同事使用了。方法,那么问题来了,为啥springboot2没问题,spring3读取出来的却又是加密的,这是为毛?

jioulongzi的专栏 1541

Spring Boot 如何自定义异常处理器

要实现自定义异常处理器,您需要执行以下步骤:1.创建一个自定义异常类,例如。} }在上面的代码中,我们创建了一个自定义异常类,继承自类。2.创建一个自定义异常处理器,例如。} }在上面的代码中,我们创建了一个自定义异常处理器,使用注解标记。这个注解表示这个类将用于全局异常处理。我们使用注解来标记处理异常的方法。在这个方法中,我们将错误信息、时间戳和请求描述封装成对象,并将其作为响应返回给客户端。3.在控制器方法中抛出自定义异常。} }在上面的代码中,我们在/test。

it_xushixiong的博客 1976

保姆级教程:用CH34xSerCfg工具修改USB转串口芯片的VID/PID,避免驱动冲突

本文详细介绍了如何使用CH34xSerCfg工具修改USB转串口芯片的VID/PID,解决驱动冲突问题。通过实战案例和配置技巧,帮助开发者高效管理嵌入式设备,避免常见的USB设备识别问题,提升开发效率。

weixin_30924239的博客 225

从零开始:使用Mask2Former训练你的专属数据集

本文详细介绍了如何从零开始使用Mask2Former训练自定义数据集。内容涵盖环境搭建、数据准备(将LabelMe格式转换为COCO格式)、数据集注册与模型配置、训练启动与调试,以及最终的模型推理与应用。通过实战步骤和常见问题解决方案,帮助读者掌握使用Mask2Former进行实例分割的核心流程,实现专属模型的训练与部署。

weixin_28678151的博客 460

Spring Boot 使用断言抛出自定义异常,优化异常处理机制

Spring Boot 使用断言抛出自定义异常,优化异常处理机制

赵士杰——成功并非一蹴而就,而是在持之以恒的努力中逐渐实现。 2872

SpyGlass CDC实战:如何用sgdc约束文件解决跨时钟域报错(附常见错误排查)

本文详细介绍了如何使用SpyGlass CDC工具编写sgdc约束文件解决跨时钟域(CDC)报错问题。从基础语法到实战案例,涵盖时钟声明、复位约束、路径豁免等关键技巧,特别针对SPI断续时钟等特殊场景提供解决方案,并附常见错误排查指南,帮助工程师高效完成CDC验证。

weixin_28744423的博客 627

springboot -- 自定义(可预知和不可预知) Exception 异常的抛出和统一捕获处理

1、首先自定义一个异常: public class UserNoExit extends RuntimeException{ public UserNoExit() { super("Not Exit..."); } } 2、此处抛出一个异常: @ResponseBody @RequestMapping("/nihao") public String aa(@RequestParam(...

sky 1154

用数据分析优化彩票决策:放弃预测,专注理性投入

彩票本质上是负和博弈的概率系统,其核心并非号码预测,而是对玩法规则、返奖率(RTP)、投入策略与心理约束的量化决策。基于组合数学与二项分布的分析方法,可精确计算各奖项概率、评估不同玩法的实际回报效率,并构建个人资金-风险-目标模型。数据的价值不在于打破随机性,而在于识别非随机环节——如奖池跃升期的RTP波动、固定奖的保底收益、冷热号背后的分奖博弈结构。这种以决策优化为导向的数据实践,适用于将彩票视为受控实验的理性参与者,而非追求玄学中奖的投机者。

frank1998819 644

从理论到波形:NE555多谐振荡器设计与示波器实战验证

本文详细介绍了NE555多谐振荡器的设计原理与实战验证方法。从基础理论到电路参数计算,再到面包板搭建与示波器测量,全面解析如何利用NE555芯片实现稳定的方波输出。通过实际案例演示了频率调整、占空比优化等技巧,并提供了常见问题排查指南,帮助电子爱好者快速掌握这一经典电路设计。

weixin_29159613的博客 283

php构造函数里抛出异常_SpringBoot 处理异常的几种常见操作

1. 使用 @ControllerAdvice 和 @ExceptionHandler 处理全局异常这是目前很常用的一种方式,非常推荐。测试代码中用到了 Junit 5,如果你新建项目验证下面的代码的话,记得添加上相关依赖。1. 新建异常信息实体类非必要的类,主要用于包装异常信息。2. 自定义异常类型3. 新建异常处理类我们只需要在类上加上@ControllerAdvice注解这个类就成为了全局异...

weixin_39735509的博客 101

爬虫瑞数5案例:联通

瑞数动态安全 Botgate(机器人防火墙)以“动态安全”技术为核心,通过动态封装、动态验证、动态混淆、动态令牌等技术对服务器网页底层代码持续动态变换,增加服务器行为的“不可预测性”,实现了从用户端到服务器端的全方位“主动防护”,为各类 Web、HTML5 提供强大的安全保护。

老衲爱洗头的博客 4471

SpringBoot全局异常处理

SpringBoot全局异常处理

骑个小蜗牛的博客 4万+

Unity之如何实现TTS文本转语音(真人发音)

微软Azure TTS 文本转语音 服务 将文本转换为逼真的语音的语音服务功能 支持个各国语言,各种中文各种方言,支持不同音色男音女音 支持离线和在线版本

TxNet 5484

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Springboot异常处理的五种方式——SpringBoot学习

  SpringBoot 框架异常处理有五种处理方式,从范围来说包括有全局异常捕获处理方式和局部异常捕获处理方式,接下来通过使用下面的后端代码一一对这五种捕获方式讲解。 package com.controller; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereo...

写Bug的小白的博客 2万+

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

SpringBoot之统一异常处理

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

. 1万+

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

SpringBoot 处理异常的几种方法

1. 使用 @ControllerAdvice 和 @ExceptionHandler 处理全局异常 ①新建异常实体类 public class ErrorResponse { private String message; private String errorTypeName; public ErrorResponse(Exception e) { this(e.getClass().getName(), e.getMessage()); }

tianynnb的博客 4858

SpringBoot异常处理

把异常页面统一放在templates的error文件夹下404、500实际项目处理中会出现各种各样的异常,如果以上面的方式处理异常,我们就需要写大量的异常处理页面,太过麻烦,可以定义中一个全部异常处理页面使用了全局异常处理后原本的/error页面就会失效共有三种方法:这里举例两种一、注解自定义一个全局异常处理类,只需上面加上 @ControllerAdvice 注解同时要在执行异常处理的方法上标记@ExceptionHandler。

仰望-星空~~的博客 5220

SpringBoot 处理异常的几种常见姿势

1. 使用 @ControllerAdvice 和 @ExceptionHandler 处理全局异常 这是目前很常用的一种方式,非常推荐。测试代码中用到了 Junit 5,如果你新建项目验证下面的代码的话,记得添加上相关依赖 1. 新建异常信息实体类 非必要的类,主要用于包装异常信息。 src/main/java/com/twuc/webApp/exception/ErrorResponse.ja...

花明的博客 778

springboot整合之统一异常处理

springboot整合实战 springboot整合之统一异常处理

qq_35771266的博客 6160

SpringBoot——全局异常处理

SpringBoot提供了两个注解用于拦截异常 1、@ControllerAdvice:标注该类为全局异常处理类,默认拦截所有被触发的异常 2、@ExceptionHandler:标注方法,用于处理特定异常

生命的痕迹 4793

Springboot 全局异常处理

关注微信公众号【Java之言】,更多干货文章和学习资料,助你放弃编程之路! 文章目录一、为何要处理全局异常?二、开发环境三、添加依赖四、自定义异常错误类4.1 自定义异常基础接口类4.2 通用异常信息枚举类4.3 业务异常信息枚举类4.4 自定义业务异常类五、接口返回统一格式六、全局异常处理七、测试7.1 辅助类7.2 测试结果 一、为何要处理全局异常? 在平常项目开发过程中,程序难免会出现运行时异常,或者业务异常。难道要针对每一处可能出现的异常进行编写代码进行处理?或者直接不处理异常,将一大屏堆.

陈皮的JavaLib 4963

SpringBoot全局异常处理捕获Filter内部异常

通常在项目中都会使用到全局异常处理,但是如果添加有拦截器,对拦截器中的异常进行捕获的时候,就会发现全局异常处理失效,无法对拦截器的异常进行捕获。 全局异常不能捕获拦截器异常的原因 SpringBoot下全局异常处理的几种方式: BasicExceptionController——SpringBoot默认处理异常方式,用于异常跳转到/error,可实现自定义错误页面请求。 @ExceptionH...

flyer5的专栏 1万+

SpringBoot 如何进行全局异常处理

在下面的例子中,我们继承了ResponseEntityExceptionHandler并使用@RestControllerAdvice注解了这个类,接着结合@ExceptionHandler针对不同的异常类型,来定义不同的异常处理方法。这里可以看到我处理的异常是自定义异常,后续我会展开介绍。ResponseEntityExceptionHandler中包装了各种SpringMVC在处理请求时可能抛出的异常的处理,处理结果都是封装成一个ResponseEntity对象。

houxian1103的博客 2456
上一篇: 使用 spring validation 完成数据后端校验
下一篇: 在 Spring/Spring Boot 中做参数校验?只看这一篇就够了
Java斗帝之路
博客等级 码龄7年 2392粉丝 687原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值