Spring Boot-如何使用异常处理程序处理页面未找到的异常

时间:2018-10-22 11:09:09

标签: java spring spring-mvc spring-boot

我正在创建一个处理程序,其中当用户尝试访问不存在的URL时,我应该能够将用户重定向到登录页面或自定义错误页面,我正在使用异常处理程序来捕获错误,但是问题是它并没有传递给处理程序,而是给了我一个白色标签错误页面。

代码如下:

@ExceptionHandler(value = ResourceNotFoundException.class)
    public String exception(ResourceNotFoundException e, HttpServletRequest request, RedirectAttributes redirectAttributes) {
        long now = new Date().getTime();
        long lastAccessed = request.getSession().getLastAccessedTime();
        boolean isNotLoggedIn = (now - lastAccessed) <= 0L;

        if (isNotLoggedIn) {
            return "forward:/login";
        }

        return "forward:/access-forbidden?errorMessage=Page Not found.";
    }

2 个答案:

答案 0 :(得分:1)

我认为您可以尝试一下,至少对我有用:

  1. application.properties中添加这两个属性:
spring.mvc.throw-exception-if-no-handler-found=true
spring.resources.add-mappings=false
  1. 将异常的类型从ResourceNotFoundException更改为NoHandlerFoundException
@ExceptionHandler(value = NoHandlerFoundException.class)
public String exception(NoHandlerFoundException e, ...) {

答案 1 :(得分:0)

确保在处理这些异常的类中包括@ControllerAdvice注释并扩展ResponseEntityExceptionHandler