java - Spring @ControllerAdvice 不起作用

标签 java spring spring-mvc exception-handling spring-rest

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

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

当我删除它们并使用我的 GlobalExceptionHandler 类时,它不处理 异常(exception)情况。

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

@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)类 GlobalExceptionHandler 扩展了 ResponseEntityExceptionHandler {

关于java - Spring @ControllerAdvice 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44499141/

相关文章:

java - 弄清楚类 Scanner 及其异常如何在 Java 中协同工作

java - 错误 "Void type not allowed here."请帮助我

Spring Boot Web Socket RabbitMQ 不可用

通过引用链: java. util.HashMap出现java.lang.UnsupportedOperationException

java - GSS 异常 : No valid credentials provided (Mechanism level: Failed to find any Kerberos tgt)

java - 寻找一种简洁的方法通过 Controller 的 Model 对象向 Spring MVC 中的每个页面添加标题信息

java - 在 Android 中为双 SIM 设备配置 EAP-SIM

java - 从现有 WSDL 文件开发 Web 服务应用程序

java - 找不到带有 URI 的 HTTP 请求的映射

spring - 静态事务属性会传播到子类吗?