java - SpringMVC : ExceptionHandler fails to catch my custom exception

标签 java spring spring-mvc exception

在我的主 Controller 中,当抛出异常时,我希望它被我的错误处理 Controller 中的ExceptionHandler捕获,但那永远不会发生。相反,我收到了 Error 500。我怀疑问题出在我的主 Controller 的 @ResponseBody 注释中。知道如何实现所需的行为吗?

主 Controller

@RequestMapping(value = "/person/{person}", method = RequestMethod.GET)
public @ResponseBody Person execute(@PathVariable(value = "person") String person) {

    if(person.isValid(person)) {
            return person;
    } else {
        throw new ResourceNotFoundException("Invalid person format.");
    }
}

异常

@ResponseStatus(value = HttpStatus.NOT_FOUND)
public class ResourceNotFoundException extends RuntimeException {

    public ResourceNotFoundException() {
    }

    public ResourceNotFoundException(String message) {
        super(message);
    }

    public ResourceNotFoundException(String message, Throwable throwable) {
        super(message, throwable);
    }

    public ResourceNotFoundException(Throwable throwable) {
        super(throwable);
    }
}

错误 Controller

private static final String ERROR_PAGE = "errors/error.jsp";

    @ResponseStatus(value = HttpStatus.NOT_FOUND)
    @ExceptionHandler(ResourceNotFoundException.class)
    public ModelAndView invalidApiCall(){
        return generateView(ERROR_404);
    }

    private ModelAndView generateView(String errorCode) {
        return new ModelAndView(ERROR_PAGE);

    }

我的错误 View 永远不会生成(@ExceptionHandler 永远不会捕获异常)。相反,我收到错误 500。ExceptionHandler 是否有办法捕获我的异常?

最佳答案

尝试为错误 Controller 添加 @ControllerAdvice 注解。如果已经添加,请检查该类的包是否包含在包扫描中。

关于java - SpringMVC : ExceptionHandler fails to catch my custom exception,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41951942/

相关文章:

java - 当我尝试在 Android Studio 中构建项目时,如何修复此错误?

java - 如何在 Spring Boot 中手动验证用户身份?

java - @ResponseBody 和语言导致编码错误

java - 在 Spring MVC hibernate 中验证用户名和密码

java - @Value 用于在 Spring 3 中初始化 java.util.Date

java - 接受/返回 XML/JSON 请求和响应 - Spring MVC

java - 使用谷歌应用程序引擎创建一个简单的动态网站

java - WorkManager 找不到所需的零参数构造函数

java - 使用堆栈来反转字符串?

java - 事务回滚后oracle undo sequence会增加吗?