SpringBoot在配置tomcat时,当tomcat接收到DispatcherServlet抛出的异常后(此异常如果没有被异常处理器处理),那么tomcat会再次分发该错误请求到DispatcherServlet中,默认不配置的话,分发的路径就叫/error。以下是自定义配置处理。
可以参考:ErrorPage全局异常处理
@Configuration
public class ErrorCodeConfig implements ErrorPageRegistrar {
@Override
public void registerErrorPages(ErrorPageRegistry registry) {
registry.addErrorPages(new ErrorPage(HttpStatus.FORBIDDEN, "/403")
, new ErrorPage(HttpStatus.NOT_FOUND, "/404")
, new ErrorPage(HttpStatus.GATEWAY_TIMEOUT, "/504")
, new ErrorPage(HttpStatus.HTTP_VERSION_NOT_SUPPORTED, "/505"));
}
}
@RestController
public class ErrorPageController {
@RequestMapping("/404")
public ResponseResult page404() {
return ResponseResult.ERROR_404();
}
@RequestMapping("/403")
public ResponseResult page403() {
return ResponseResult.ERROR_403();
}
@RequestMapping("/504")
public ResponseResult page504() {
return ResponseResult.ERROR_504();
}
@RequestMapping("/505")
public ResponseResult page505() {
return ResponseResult.ERROR_505();
}
}