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

ControllerAdvice ExceptionHandler未从PropertyEditorSupport调用
EN

Stack Overflow用户
提问于 2013-04-23 14: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 14: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

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档