1.问题解释:
在学习SpringBoot的过程中发现全局异常不进行处理,在反复百科研究后发现:
GlobalExceptionHandler.java类中的@ControllerAdvice注解只处理经过Controller的不经过Controller的不进行处理
由此可得出404的错误@ControllerAdvice是不进行处理的。
2.问题解决:
SpringBoot 默认提供了一个全局的 handler 来处理所有的 HTTP 错误, 并把它映射为 /error。当发生一个 HTTP 错误, 例如 404 错误时, SpringBoot 内部的机制会将页面重定向到 /error 中。
所以我们只要实现一个 /error 映射的 Controller 即可来处理它即可,我们需要实现ErrorController接口,重写handleError方法(SpringBoot2.0不管用,springBoot2.0见我的另一篇帖子SpringBoot2.0 拦截404,500页面方法)
(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)运行测试