春季@ControllerAdvice不起作用



我想在我的 GlobalExceptionHandler 类的帮助下处理任何控制器抛出的所有异常。当我将以下代码添加到我的控制器时,它工作正常。但在这种情况下,我必须将以下代码添加到我的所有控制器中。但我不想在每个控制器中重复以下代码。

@ExceptionHandler({ FiberValidationException.class }) public String handleValidationException(HttpServletRequest req, Exception ex) { return ex.getMessage(); }

当我删除它们并使用我的 GlobalExceptionHandler 类时,它无法处理 异常。

原因是什么?我该如何解决?

@ControllerAdvice
@EnableWebMvc
public class GlobalExceptionHandler {
private static final Logger LOG = Logger.getLogger(GlobalExceptionHandler.class);
@ExceptionHandler({ FiberValidationException.class })
public String handleValidationException(HttpServletRequest req, Exception ex) {
LOG.error("FiberValidationException handler executed");
return ex.getMessage();
}
@ExceptionHandler({ ChannelOverflowException.class })
public String handleOverflowException(HttpServletRequest req, Exception ex) {
LOG.error("ChannelOverflowException handler executed");
return ex.getMessage();
}
}

使用ResponseEntityExceptionHandler扩展全局异常类。public class GlobalExceptionHandler extends ResponseEntityExceptionHandler {

您可以定义 ControllerAdvice 的基本包

在我的情况下,我的函数条目参数被指定了错误的异常,例如,我为MissingFormatArgumentException传递了EntityNotFoundException异常,所以我对此异常的响应始终是500,并且从未在我的控制器建议中捕获。

相关内容

  • 没有找到相关文章

最新更新