9.Spring Boot 全局异常处理@ControllerAdvice

@ControllerAdvice全局异常处理详解 @ControllerAdvice是Spring框架提供的一个注解,它可以用来集中处理应用程序中的异常情况,并且在一个地方进行全局的数据绑定和预处理。通常结合和注解来实现全局的异常处理全局数据绑定和全局数据预处理。 阅读详情

Spring Boot 全局异常处理@ControllerAdvice

      在开发中出现异常后,可能需要一个统一处理的地方,来处理程序出现的异常,针对不同的异常做不同的处理,这里我们通过@ExceptionHandler注解来实现。在WEB开发中,比如页面出入进来日期,需要进行一些转换那么这里使用@InitBinder注解来处理。上面说的是一些使用场景,接下来具体如何实现。

1.使用@ExceptionHandler当前Controller异常处理

      @ExceptionHandler可以使用在任何用@Controller注解修饰的类中,设置出现某种异常的时候执行,具体代码如下:
   (1)新建Controller,名称为:TestController,代码如下:
package com.chengli.springboot.controller;

import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.context.request.WebRequest;

@RestController
public class TestController {
	@RequestMapping(value = "/")
	public String hello() {
		throw new RuntimeException();
	}

	@ExceptionHandler(value = { RuntimeException.class })
	public String exception(Exception e, WebRequest webRequest) {
		return "出现异常了,在本类处理";
	}
}

    (2)新建启动入口类,名称:MainConfig,具体代码如下:
package com.chengli.springboot;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class MainConfig {
	public static void main(String[] args) {
		SpringApplication.run(MainConfig.class, args);
	}
}
    (3)运行启动,在浏览器输入后,会出现“出异常了,在本类处理”

2.使用@ExceptionHandler全局异常处理

    (1)新建全局异常处理类,代码如下:
package com.chengli.springboot.exception;

import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

@RestControllerAdvice
public class DefaultExceptionHandlerAdvice {
	@ExceptionHandler(value = { Exception.class })
	public String exception() {
		return "出异常了,全局异常处理";
	}
}

    (2)这里需要提醒一点的是,优先级问题,同一种异常处理在本类的优先级要高,会优先使用本类的其次是全局的。所以我们这里需要将本类使用@ExceptionHandler的方法先注释掉,然后在浏览器上输入后,出现“出异常了,全局异常处理”。那么就OK啦。
      注意:这里我使用的是@RestControllerAdvice,@RestControllerAdvice是一个组合注解,组合了@ControllerAdvice、@ResponseBody,因为我这里是演示直接返回的是内容,所以为了方便使用@RestControllerAdvice,如果你们的异常需要返回页面啊之类的,你可以使用@ControllerAdvice分别定制。

3.使用@InitBinder注解处理绑定值

    (1)添加initBinder方法,代码如下:
@InitBinder
	public void initBinder(WebDataBinder binder) {
		binder.registerCustomEditor(Date.class, new PropertyEditorSupport() {
			@Override
			public void setAsText(String text) {
				SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
				try {
					setValue(format.parse(text));
				} catch (ParseException e) {
					e.printStackTrace();
				}
			}
		});
	}

    (2)上面的代码我是在处理参数的时候,将日期参数按照指定格式parse后在进行设置。@initBinder注解在很多场景下能用的上,比如你要处理字符串用来编码防止XSS攻击啊或者你要预先做个处理的都可以,这里就不细说了,@initBinder注解是可以放在所有使用了@Controller类中的,也可以放到全局类中,也就是说使用了@ControllerAdvice注解的类。
@RestControllerAdvice注解 RestControllerAdvice注解是一个用于定义全局RESTful异常处理类的类级别注解。通过使用@RestControllerAdvice和@ExceptionHandler注解,你可以实现在整个应用程序范围内统一处理RESTful风格的异常。它自动将异常处理方法的返回值转换为HTTP响应的主体,使得代码更加简洁、可读和可维护。 阅读详情

相关推荐

SpringBoot中@ControllerAdvice/@RestControlAdvice+@ExceptionHandler实现全局异常捕获与处理

在编写Controller接口时,为避免接口因为未知的异常导致返回不友好的结果和提示。如果不进行全局异常捕获则需要对每个接口进行try-catch或其他操作。可以对Controller进行全局的异常捕获和处理,一旦发生异常,则返回通用的500响应码与通用错误提示。并将异常发生的具体的文件、类、方法、行数信息记录到日志。@ControllerAdvice,是Spring3.2提供的新注解,它是一个Controller增强器,

BADAO_LIUMANG_QIZHI的博客 4400

@ControllerAdvice(处理全局异常)

文章目录SpringMVC中@ControllerAdvice注解全局异常处理全局数据绑定全局数据预处理 SpringMVC中@ControllerAdvice注解 @ControllerAdvice ,很多初学者可能都没有听说过这个注解,实际上,这是一个非常有用的注解,顾名思义,这是一个增强的 Controller。使用这个 Controller ,可以实现三个方面的功能: 全局异常处理 全局数据绑定 全局数据预处理 灵活使用这三个功能,可以帮助我们简化很多工作,需要注意的是,这是 SpringMVC

qq_42418169的博客 2807

DIY压电陶瓷传感器信号放大:从拆解到JFET电路实战(附示波器实测数据)

本文详细介绍了如何利用废旧设备拆解的压电陶瓷片,结合JFET(结型场效应管)高输入阻抗特性,DIY搭建高灵敏度振动传感器放大电路。从元件拆解、参数实测到JFET共源极放大器实战搭建与调试,提供了完整的步骤、示波器实测数据及优化方案,帮助电子爱好者实现低功耗振动检测应用。

weixin_29195615的博客 382

@ControllerAdvice:实现全局异常处理

@ControllerAdvice+@ExceptionHandler注解使用方法

qq_35055573的博客 4290

从零到一:R与RStudio的安装与配置全攻略

本文提供了R与RStudio的完整安装与配置指南,涵盖Windows、Mac和Linux三大操作系统。从基础环境搭建到高级性能优化,详细介绍了R语言安装、RStudio配置、项目管理和实用技巧,帮助数据科学初学者快速搭建高效的分析工作环境。

weixin_29062671的博客 418

未连接互联网的银河麒麟v10安装g++,各种报错,如何处理?

🏆本文收录于《全栈Bug调优(实战版)》专栏,主要记录项目实战过程中所遇到的Bug或因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!! 备注:部分问题/疑难杂症搜集于互联网。

**My Coding Family** 1802

Spring Boot 全局异常处理策略设计(一):异常不只是 try-catch

Spring Boot 全局异常处理策略解析 本文系统介绍了Spring Boot中异常处理的核心理念与实现方案。首先指出异常处理不应局限于try-catch语法,而是Web系统失控时的关键兜底机制。文章分析了Java异常模型,强调异常传播的"反向调用链"特性,并揭示了try-catch的三个常见问题。 重点讲解了Spring MVC的异常处理架构,包括三种基础方式:直接抛出异常、@ExceptionHandler局部处理和@ControllerAdvice全局处理。其中@Control

Java、Python、AI、前沿技术等领域的技术总结和经验分享。 2263

(第100天)Oracle GoldenGate 常见故障处理指南

OGG 运维的核心在于细致的配置管理和主动的问题排查。熟悉常见错误、掌握关键操作流程、并善用日志和调试工具,是保障数据同步任务稳定运行的关键。希望这份指南能帮助您更高效地解决 OGG 同步中遇到的问题。祝您运维顺利!

LuciferLiu_DBA 299

使用@ControllerAdvice实现全局异常处理

1,定义统一返回封装类 /** * 返回结果通用封装 */ @Data //给set方法设置返回对象,返回对象就是自己本身 @Accessors(chain = true) //使对象可以使用builder方式进行创建 @Builder @ApiModel(value = "Result对象",description = "通用结果返回对象") public class Result<T> implements Serializable { private static final

qq_45752401的博客 2189

【WRF工具】WRF 模型输出可视化工具 plotfmt

【WRF工具】WRF 模型输出可视化工具 plotfmt

WW、forever的博客 1288

华南理工大学-大学物理实验-不良导体热导率测量

不良导体热导率测量 引言 导热系数(又叫热导率)是反映材料热性能的重要物理量。热传导是热交换的三种(热传导、对流和辐射)基本形式之一,是工程热物理、材料科学、固体物理及能源、环保等各个研究领域的课题。材料的导热机理在很大程度上取决于它的微观结构,热量的传递依靠原子、分子围绕平衡位置的振动以及自由电子的迁移。在金属中电子流起支配作用,在绝缘体和大部分半导体中则以晶格振动起主导作用。因此,某种材料的导热系数不仅与构成材料的物质种类密切相关,而且还与材料的微观结构、温度、压力及杂质含量相联系。在科学实验和工程设计

mohen_777的博客 871

Spring Boot 全局异常处理问题分析与解决方案

摘要:本文分析了Spring Boot项目中全局异常处理器无法捕获过滤器异常的问题,并提出四种解决方案。问题表现为过滤器抛出的异常未被全局处理器捕获,导致响应格式不一致。解决方案包括:1) 在过滤器中手动处理异常;2) 使用ErrorController统一处理;3) 通过AOP切面拦截异常;4) 开发自定义异常处理框架。每种方案各有优缺点,开发者可根据项目需求选择合适的方法,确保整个应用的异常处理一致性。

wuxuanok的博客 1435

51单片机 DHT11温湿度传感器LCD显示+串口打印+Proteus仿真

DHT11+LCD1602+串口输出+Proteus仿真

perseverance51博客 7197

Spring Security- 自定义认证异常与全局异常处理

在现代 Java Web 应用开发中,安全机制是系统架构中不可或缺的一环。Spring Security 作为 Spring 生态中最主流的安全框架,提供了强大的身份认证(Authentication)和授权(Authorization)能力。然而,其默认的异常处理机制往往无法满足实际项目中对错误信息格式化、日志记录、前端友好提示等需求。本文将深入探讨如何在 Spring Boot + Spring Security 架构中实现自定义认证异常以及构建统一的全局异常处理机制。

千淘万漉虽辛苦,吹尽狂沙始到金 1万+

TPAMI 2024 | MO-MIX:基于深度强化学习的多目标多智能体协同决策

深度强化学习(RL)已被广泛应用于解决复杂的决策问题。在许多现实世界的场景中,任务通常有多个相互冲突的目标,并且可能需要多个智能体进行合作,这些是多目标多智能体决策问题。然而,在这个交叉领域的研究工作还相对较少。现有的方法仅限于单独的领域,并且只能处理具有单一目标的多智能体决策,或者具有单一智能体的多目标决策。在本文中,我们提出了MO-MIX来解决多目标多智能体强化学习(MOMARL)问题。我们的方法基于集中训练与分散执行(CTDE)框架。

小白学视觉 1128

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

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

Spring Boot 2 Webflux的全局异常处理

https://www.jianshu.com/p/6f631f3e00b9 本文首先将会回顾Spring 5之前的SpringMVC异常处理机制,然后主要讲解Spring Boot 2 Webflux的全局异常处理机制。 SpringMVC的异常处理 Spring 统一异常处理有 3 种方式,分别为: 使用 @ExceptionHandler 注解 实现 Handl...

diaojin6880的博客 644

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Spring Boot项目里,别再用try-catch了!试试@ControllerAdvice+@ExceptionHandler优雅处理全局异常

本文详细介绍了在Spring Boot项目中如何使用@ControllerAdvice和@ExceptionHandler注解优雅处理全局异常,替代传统的try-catch模式。通过实战案例和高级技巧,展示了如何减少代码冗余、提升维护效率并增强系统安全性,特别适合追求代码质量的Java开发者。

weixin_30336061的博客 266

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Spring Boot 入门之路(9)--- 全局异常处理方案

当 web 程序发生了异常,往往会在客户端直接显示 “Whitelabel Error Page” 页面,十分的不美观。因此,每一个 web 程序都需要通过一个统一的全局异常处理方案来保证客户端能够收到友好的提示。 1 Spring Boot 默认的异常处理机制 当浏览器客户端请求一个不存在的页面或服务端处理发生异常时,Spring Boot 默认会响应一个 html 文档内容,称作“Whitel...

Geffin的博客 381

利用@ControllerAdvice和@ExceptionHandler自定义全局异常并打印日志到前端页面

@ExceptionHandler 单独使用一般是用在控制器的内部某个方法上,表示捕捉控制器内部抛出的异常 详细的使用方法请参考:lkforce的博客 @ControllerAdvice+@ExceptionHandler Spring 3.2之后加入了新的@ControllerAdvice注解,可以支持全局的异常处理。 自定义全局异常并打印系统默认日志demo: 第一步:修改pom配置文件 设置日志级别和日志保存地址 logging.level.root=info logging.lev

lovekjl的博客 1772

3.2.9.1.SpringBoot全局异常处理

ControllerAdvice是Spring MVC提供的一个类级别的注解,用于定义全局异常处理,它可以跨多个@Controller类统一处理异常。在校验失败时,MethodArgumentNotValidException会被抛出,可以在全局异常处理类中处理该异常并返回详细的错误信息。如果希望某些特定的异常可以自动返回特定的 HTTP 状态码,可以使用 @ResponseStatus 注解。在 Spring Boot 3.0 中处理API异常,通常我们使用全局异常处理来捕获并处理应用中的异常。

浩瀚银河 840

Spring异常处理(@ControllerAdvice)

/ 基础业务异常@Getter// 常用枚举码(放在 constants 包)@GetterSUCCESS(200, "操作成功"),FAIL(500, "操作失败"),PARAM_ERROR(1001, "参数错误"),USER_NOT_FOUND(1002, "用户不存在"),LOGIN_EXPIRED(1003, "登录已过期"),STOCK_NOT_ENOUGH(1004, "库存不足"),ORDER_NOT_FOUND(1005, "订单不存在");

likuoelie的博客 972

Springboot全局异常处理

1、全局异常处理,指的是对于程序中产生的Exception进行的处理。产生了异常之后,可以统一跳转到一个页面进行错误提示,也可以通过Restful形式返回错误信息。   注意:关于全局错误与全局异常的区别。全局错误,指的是对http状态码进行的错误跳转处理,全局异常指的是发生某些异常(如果处理的是Exception,则表示处理全部异常)之后的跳转页面。两者属于并行的概念,在项目开发中建议...

HiterCoder 427

SpringBoot 3.x @ControllerAdvice 实战:3种作用域精准控制与全局异常处理

本文深入解析SpringBoot 3.x中@ControllerAdvice的3种作用域控制方式(assignableTypes/basePackages/annotations),详解全局异常处理与数据绑定优化方案。通过实战案例展示如何实现精准拦截、模块化管理和注解驱动开发,提升企业级应用的维护性与性能表现。

cuixie2370的博客 325

Spring Boot 全局异常处理

1.public class ErrorResponseEntity { private int code; private String message; public int getCode() { return code; } public void setCode(int code) { this.code = c...

weixin_40839342的博客 219

Spring Boot 中如何优雅处理全局异常

使用实现全局异常拦截自定义业务异常更利于控制错误逻辑返回统一响应结构提升前后端协作效率。

2503_92674277的博客 241

dubbo全局异常处理_峰哥说技术系列-9 Spring Boot ControllerAdvice处理全局异常

今日份主题Spring Boot ControllerAdvice处理全局异常ControllerAdvice是Controller的增强版,主要用于全局数据的处理,一般和@ExceptionHandler、@InitBinder、@ModelAttribute搭配使用。它并不属于Spring Boot的内容,而是Spring框架中本身就有该注解。一般来说@ExceptionHandler和该注解...

weixin_29195217的博客 200
上一篇: 8.Spring Boot 日志配置
下一篇: 10.Spring Boot 集成Mybatis
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值