项目可能会有各种未知异常,一旦出现异常就会把堆栈信息暴露给前端,所以有个地方统一处理所有异常情况。
继承spring boot 2.0.0 才有的接口 ErrorController 。
/**
* @author xxx
*/
@RestController
public class SystemExceptionController implements ErrorController {
private static final String ERROR_PATH = "/error";
@RequestMapping(value=ERROR_PATH)
public Object handleError(HttpServletRequest request,HttpServletResponse response){
Integer statusCode = (Integer) request.getAttribute("javax.servlet.error.status_code");
if(Objects.equals(HttpStatus.NOT_FOUND.value(),statusCode)){
return new ResultVO(404,"URL Not Found",Collections.EMPTY_LIST);
}else {
return new ResultVO(500,"500Internal Server Error",Collections.EMPTY_LIST);
}
}
@Override
public String getErrorPath() {
return ERROR_PATH;
}
}