栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在Spring MVC中处理包装的异常

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在Spring MVC中处理包装的异常

不幸的是,

UnrecognizedPropertyException
是的子类型
IOException
。在
RequestResponseBodyMethodProcessor
一个处理
@RequestBody
(我认为这就是发生异常)具有特殊处理
IOException
(如解析请求输入流的失败),在其包装
HttpMessageNotReadableException
。另外,如果在期间发生转换错误,
HttpMessageConverter
则指定接口抛出。
HttpMessageNotReadableException
read

无论如何,您都将不得不处理该问题(如果杰克逊抛出了未经检查的异常,情况可能会有所不同)。

幸运的是,从4.3开始,Spring
MVC

ExceptionHandlerMethodResolver

(处理
@ExceptionHandler
)可以解开
cause
异常的包装(请参阅SPR-14291)。因此,假设您的处理
HttpMessageNotReadableException
程序方法的继承层次结构中没有任何异常的处理程序

@ExceptionHandlerpublic String handle(UnrecognizedPropertyException e) {    ...}

将用于处理异常。在Spring
MVC寻找可以处理的处理程序方法

HttpMessageNotReadableException
之后,然后使用展开嵌套的异常
Throwable#getCause
并再次尝试查找,就会发生这种情况。


在4.3之前的版本中,或者如果您在

HttpMessageNotReadableException
继承层次结构中确实有针对异常类型的处理程序,则始终可以在自己提取出原因之后委托。

@ExceptionHandlerpublic String handle(HttpMessageConversionException e) throws Throwable {    Throwable cause = e.getCause();    if (cause instanceof UnrecognizedPropertyException) {        handle((UnrecognizedPropertyException) cause);    }    ...}public String handle(UnrecognizedPropertyException e) {    ...}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/415366.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号