GlobalExceptionHandler

GlobalExceptionHandler

我想在我的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 {

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

10-09 07:17