首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >ControllerAdvice ExceptionHandler未从PropertyEditorSupport调用

ControllerAdvice ExceptionHandler未从PropertyEditorSupport调用
EN

Stack Overflow用户
提问于 2013-04-23 06:48:01
回答 1查看 1.3K关注 0票数 1

我使用Spring3.2.1,并有一个PropertyEditorSupport来强制使用我希望自动转换为enum的参数为大写,这样它就可以转换错误的大小写参数。如果参数字符串不能转换为枚举,则可以引发IllegalArgumentException。我的问题是,当状态码应该是400时,状态代码被返回为500。我创建了一个带有@ControllerAdvice注解的@ControllerAdvice和一个带有@ExceptionHandler (IllegalArgumentException.class)注释的方法,目的是在那里设置状态代码,但是当抛出异常时,永远不会调用该方法。为什么不行?MaxUploadSizeExceededException doesn't invoke the exception handling method in Spring,这和这里讨论的问题相同吗?即

“在请求到达dispatcher servlet之前抛出...the异常。因此不调用异常处理程序,因为在抛出异常时,目标控制器尚未确定。”

如果是这样,我如何返回正确的状态代码?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-17 06:45:14

简短版本:

@ExceptionHandler(Exception)注释的方法放在@Controller类中。

较长版本:

我注意到,只有在“使用匹配的@ExceptionHandler(XxxException.class)输入方法”之后发生XxxException时,才会调用@ControllerAdvice类中的XxxException注释方法。

MaxUploadSizeExceededExceptionMethodArgumentNotValidException这样的条件将导致SpringMVC不进入@RequestMapping方法,因此不应用通知。

我的解决方案是将@ExceptionHandler(XxxException.class)注释的方法不幸地放在实际的控制器类中。不太好但很管用。

希望这能有所帮助。如果有人知道更好的解决方案(当使用@ControllerAdvice时),请共享。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16172437

复制
相关文章
@ControllerAdvice + @ExceptionHandler 处理 全部Controller层异常
对于与数据库相关的 Spring MVC 项目,我们通常会把 事务 配置在 Service层,当数据库操作失败时让 Service 层抛出运行时异常,Spring 事物管理器就会进行回滚。 如此一来,我们的 Controller 层就不得不进行 try-catch Service 层的异常,否则会返回一些不友好的错误信息到客户端。但是,Controller 层每个方法体都写一些模板化的 try-catch 的代码,很难看也难维护,特别是还需要对 Service 层的不同异常进行不同处理的时候。例如以下 Co
二十三年蝉
2018/03/29
1.4K0
2.使用@ControllerAdvice+@ExceptionHandler 注解处理异常
本文最后更新于 908 天前,其中的信息可能已经有所发展或是发生改变。 1.介绍 建立一个专门负责处理异常的类 缺点:实现过程复杂 2.实现 @ControllerAdvice public class GlobalException { @ExceptionHandler(value={java.lang.ArithmeticException.class}) public ModelAndView arithmeticExceptionHandler(Exception e){
Yuyy
2022/06/28
2140
Springboot异常处理只会@ControllerAdvice+@ExceptionHandler?还远远不够!
当系统出现异常时候,或404,或500,默认返回的错误页面通常非常简陋,用户也看不懂,这时候我们想通过一些手段,提示用户访问的资源不存在,或者请稍后再试。
java思维导图
2019/09/19
2.4K0
Springboot异常处理只会@ControllerAdvice+@ExceptionHandler?还远远不够!
【Spring Boot实战与进阶】全局异常处理@ExceptionHandler+@ControllerAdvice的使用
  需要注意的是,ExceptionHandler 的优先级比 ControllerAdvice 高,即优先让 ExceptionHandler 标注的方法处理。
程序员云帆哥
2022/05/12
4650
使用ControllerAdvice注意事项,Ambiguous @ExceptionHandler method mapped for [class org.springframework.web.
前言 ControllerAdvice非常好用,可以把系统内部的异常统一处理。用起来也很简单。比如,http://www.cnblogs.com/woshimrf/p/spring-web-400.html 而Spring提供了一个base类ResponseEntityExceptionHandler,可以使用这个来处理。但用的时候要注意,不要重复定义异常捕获,对于base里已经定义好的,只要overwrite就好,不要重复声明异常拦截。 以下来自stackoverflow 问题 @ControllerAd
Ryan-Miao
2018/03/14
2.5K0
Spring Boot2.x-11 使用@ControllerAdvice和@ExceptionHandler实现自定义全局异常
我们在Spring Boot2.x-07Spring Boot2.1.2整合Mybatis这边文章的基础上来实现下Spring Boot使用@ControllerAdvice和@ExceptionHandler实现自定义全局异常。
小小工匠
2021/08/17
9630
Disruptor之ExceptionHandler
    如下List-2所示,Disruptor中默认使用ExceptionHandler的ExceptionHandlerWrapper实现,如List-3所示,使用了代理,委托内部的delete来处理。
克虏伯
2020/06/18
1.2K0
SpringBoot全局异常处理的三种方式
在使用 SpringBoot 开发 Web 应用时,异常处理是必不可少的一部分。在应用中,异常可能会出现在任何地方,例如在控制器、服务层、数据访问层等等。如果不对异常进行处理,可能会导致应用崩溃或者出现未知的错误。因此,对于异常的处理是非常重要的。
架构狂人
2023/08/16
2.1K0
SpringBoot全局异常处理的三种方式
【Spring专题】「技术原理」从源码角度去深入分析关于Spring的异常处理ExceptionHandler的实现原理
ExceptionHandler是Spring框架提供的一个注解,用于处理应用程序中的异常。当应用程序中发生异常时,ExceptionHandler将优先地拦截异常并处理它,然后将处理结果返回到前端。该注解可用于类级别和方法级别,以捕获不同级别的异常。
码界西柚
2023/04/09
3K0
【Spring专题】「技术原理」从源码角度去深入分析关于Spring的异常处理ExceptionHandler的实现原理
Java 8日期类型在Springboot Controller,Mybatis中的一些处理
首先Java 8的日期类型LocalDate,LocalDateTime,LocalTime在Mybatis中并没有映射关系,为此mybatis推出了一个补丁。
算法之名
2019/09/16
1.6K0
SpringFramework之ControllerAdvice注解的源码分析
    SpringFramework版本5.0.9.release。     我们会通过@ControllerAdvice和@ExceptionHandler来处理异常,Springmvc是如何进行
克虏伯
2019/09/04
8250
SpringFramework之ControllerAdvice注解的源码分析
从原理层面掌握@InitBinder的使用【享学Spring MVC】
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
YourBatman
2019/09/18
3.4K0
深入理解Spring异常处理
相信我们每个人在SpringMVC开发中,都遇到这样的问题:当我们的代码正常运行时,返回的数据是我们预期格式,比如json或xml形式,但是一旦出现了异常(比如:NPE或者数组越界等等),返回的内容确实服务端的异常堆栈信息,从而导致返回的数据不能使客户端正常解析; 很显然,这些并不是我们希望的结果。
宜信技术学院
2019/07/02
9260
深入理解Spring异常处理
SpringBoot统一异常处理
比如:INTERNAL_SERVER_ERROR 它是服务器只要任何方法执行报任何异常Exception 都会是500。这就会给开发者带来困扰,给用户一个错误就够了。对开发者来说就不够细粒度,因为未来程序的开发大部分是一种前后端分离的开发方式,如果不给接口调用者,具体的错误信息提示的话,可能会造成很多的沟通成本,开发的时间成本。
用户7741497
2022/08/01
7820
《Springboot极简教程》系统异常全局统一处理:@ControllerAdvice plus @ExceptionHandler统一异常处理代码实例运行
用@ControllerAdvice和@ExceptionHandler两个注解来做异常的统一处理。
一个会写诗的程序员
2018/08/20
7490
《Springboot极简教程》系统异常全局统一处理:@ControllerAdvice plus @ExceptionHandler统一异常处理代码实例运行
SpringBoot系列教程web篇之全局异常处理
当我们的后端应用出现异常时,通常会将异常状况包装之后再返回给调用方或者前端,在实际的项目中,不可能对每一个地方都做好异常处理,再优雅的代码也可能抛出异常,那么在 Spring 项目中,可以怎样优雅的处
一灰灰blog
2019/10/14
8620
SpringBoot系列教程web篇之全局异常处理
Spring 中的统一异常处理
在具体的SSM项目开发中,由于Controller层为处于请求处理的最顶层,再往上就是框架代码的。 因此,肯定需要在Controller捕获所有异常,并且做适当处理,返回给前端一个友好的错误码。
芋道源码
2019/10/08
7960
Spring Boot处理REST API错误的正确姿势
如何正确的处理API的返回信息,让返回的错误信息提供更多的含义是一个非常值得做的功能。 默认一般返回的都是难以理解的堆栈信息,然而这些信息也许对于API的客户端来说有可能并没有多大用途,并没有多大意
ImportSource
2018/04/03
3.6K0
Spring Boot处理REST API错误的正确姿势
Spring MVC 异常解析器,原理就是这么简单
因为@ExceptionHandler注解的方式已经足够强大,所以我们一般也很少通过实现HandlerExceptionResolver来自定义异常处理策略。
Java识堂
2020/06/23
1.3K0
从零开始做网站8-全局异常处理和使用mybatis-plus分页插件
全局异常处理用于前端统一错误显示,还有就是后端分页插件,使用的mybatisplus。
sunonzj
2022/06/21
6450
从零开始做网站8-全局异常处理和使用mybatis-plus分页插件

相似问题

Kotlin ControllerAdvice和ExceptionHandler不会被调用

30

Spring ControllerAdvice ExceptionHandler不工作

11

Spring @ControllerAdvice/ @ExceptionHandler不工作

11

@ControllerAdvice @ExceptionHandler不捕获异常

1255

从控制器@ExceptionHandler方法调用全局@ControllerAdvice方法

114
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文