<T> T doGet(String uri, Map<String, String> headers, Map<String, Object> params, Class<T> targetType){ for (;;){ try { return doGet(currentServer, uri, headers, params, targetType); } catch (AuthFailException e){ throw new IllegalArgumentException("appKey isn't right, please check"); } catch (Server503Exception | HttpRequest.HttpRequestException e){ Sleeps.sleep(2); String oldServer = currentServer; log.warn("current server({}) is unavailable, try to select a new server", oldServer); if(selectServer()){ log.info("old server({}) is unavailable, routed a select server({})", oldServer, currentServer); } else { log.warn("failed to select a new server, please check the server cluster"); Sleeps.sleep(5); } } } }