SpringBoot 全局异常处理不生效问题解决

1.问题解释: 

  在学习SpringBoot的过程中发现全局异常不进行处理,在反复百科研究后发现:

    GlobalExceptionHandler.java类中的@ControllerAdvice注解只处理经过Controller的不经过Controller的不进行处理
  由此可得出404的错误@ControllerAdvice是不进行处理的。

2.问题解决:

  SpringBoot 默认提供了一个全局的 handler 来处理所有的 HTTP 错误, 并把它映射为 /error。当发生一个 HTTP 错误, 例如 404 错误时, SpringBoot 内部的机制会将页面重定向到 /error 中。

所以我们只要实现一个 /error 映射的 Controller 即可来处理它即可

(1)创建404界面

(2)创建处理404的controller类

package cn.erro;

import org.springframework.boot.autoconfigure.web.ErrorController;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class HttpErrorController implements ErrorController {
    
    private static final String ERROR_PATH = "/error";  
       
    @RequestMapping(value=ERROR_PATH)  
       public String handleError(){  
           return "errorpages/404";  
       }
    
    @Override
    public String getErrorPath() {
        return ERROR_PATH;
    }
 
}
(3)运行测试

 参考自:https://blog.csdn.net/x6582026/article/details/76400422

猜你喜欢

转载自blog.csdn.net/qq_42511800/article/details/85113235