gpt4 book ai didi

java - 为什么@ExceptionHandler(MethodArgumentNotValidException.class) 被忽略以支持@ExceptionHandler(Exception.class)

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

我知道 Exception 是所有异常的父级,但我认为当您为特定异常类设置 @ExceptionHandler 时,它应该处理该特定异常。

也许您可以指出我在以下代码中遗漏的内容,以便 MethodArgumentNotValidException 将进入 processValidationError 方法而不是 processError 方法。

@ControllerAdvice
public class ExceptionHandler {

@ExceptionHandler(Exception.class)
@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
@ResponseBody
public ValidationErrorDTO processError(Exception e) {
return processErrors(e);
}
}

@ControllerAdvice
public class OtherExceptionHandler {

@ExceptionHandler(MethodArgumentNotValidException.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
@ResponseBody
public ValidationErrorDTO processValidationError(MethodArgumentNotValidException ex) {
return processErrors(ex);
}
}

最佳答案

编辑后很明显您有多个 @ControllerAdvice 类。

简而言之,问题是您的 ExceptionHandler 类(及其 @Exception.class@ExceptionHandler)首先由 Spring 注册,并且因为 Exception 处理程序匹配任何异常,它会在 Spring 定义更具体的处理程序之前匹配。

您可以在@Sotirios 回答 here 中阅读详细解释.

关于java - 为什么@ExceptionHandler(MethodArgumentNotValidException.class) 被忽略以支持@ExceptionHandler(Exception.class),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19567496/

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