不幸的是,
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) { ...}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)