gpt4 book ai didi

java - HttpMessageConversionException 中的 UnrecognizedPropertyException 未在 ControllerAdvice 中展开

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:20:49 24 4
gpt4 key购买 nike

我有与人 here 询问的完全相同的情况.我正在使用 Spring 5.1.8.RELEASE。

我在全局异常处理程序中有两个方法:

@ExceptionHandler(HttpMessageNotReadableException.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
public @ResponseBody Error handleHttpMessageNotReadableException(final HttpMessageNotReadableException e, final WebRequest request) {
...
}

@ExceptionHandler(UnrecognizedPropertyException.class)
@ResponseStatus(HttpStatus.UNPROCESSABLE_ENTITY)
public @ResponseBody Error handleUnrecognizedPropertyException(final UnrecognizedPropertyException e, final WebRequest request) {
...
}

自从我添加了 handleHttpMessageNotReadableException 之后,所有 UnrecognizedPropertyException.class 类型的异常都被定向到该方法,而不是 handleUnrecognizedPropertyException。。 p>

据我所知,Spring 应该解开原因以便首先启动最深的异常,正如我在这个问题开头链接的问题中所解释的那样。在这种情况下显然不会发生这种情况,即使原因清楚地表明这是一个 UnrecognizedPropertyException:

UnrecognizedPropertyException inside HttpMessageNotReadableException

最佳答案

我找到的最佳解决方案是移动:

@ExceptionHandler(HttpMessageNotReadableException.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
public @ResponseBody Error handleHttpMessageNotReadableException(final HttpMessageNotReadableException e, final WebRequest request) {
...
}

到另一个用 @ControllerAdvice 注释的新类。我给了这个类 @Priority(2) 和初始类 @Priority(1)。这样,Spring 首先加载原始类并检查那里的异常处理,然后再转移到我创建的具有较低优先级的新类。

像这样,我可以处理这两种异常而不用做任何肮脏的把戏。

关于java - HttpMessageConversionException 中的 UnrecognizedPropertyException 未在 ControllerAdvice 中展开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57692742/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com