通常使用spring-boot都会声明一个@ControllerAdvice统一处理业务异常;
不过像404这类异常,统一处理异常类就无法捕获到;
如若请求是404状态, spring-boot默认会重定向到/error这个uri, 这个uri默认是BasicController进行处理;
为了能订制化返回的格式;
为此,可用声明一个controller继承于ErrorController ,即可订制返回信息
@RestController
public class AppErrorController implements ErrorController {
@Value("${error.path:/error}")
private static final String PATH = "/error";
@RequestMapping(value = PATH)
public Result error(HttpServletResponse response) {
Result result = Result.err();
if(response.getStatus() == HttpServletResponse.SC_NOT_FOUND){
result.setCode(HttpServletResponse.SC_NOT_FOUND+"");
result.setMessage("接口不存在");
}else{
result.setMessage("ERROR");
}
return result;
}
@Override
public String getErrorPath() {
return PATH;
}
}