Java异常-尝试n';第十次返回;试一试;语句块

Java异常-尝试n';第十次返回;试一试;语句块,java,exception,exception-handling,Java,Exception,Exception Handling,我正在尝试进行一个调用,该调用可能会由于服务器关闭而引发异常。 这就是我想要实现的目标: Server server = serverQueue.poll(); try { if (server==null){return null} server.makeConnection(); } catch (Exception e) { // try another server server = serverQueue.poll(); // now

我正在尝试进行一个调用,该调用可能会由于服务器关闭而引发异常。 这就是我想要实现的目标:

Server server = serverQueue.poll();
try {
     if (server==null){return null}
     server.makeConnection();

} catch (Exception e) {
     // try another server
     server = serverQueue.poll();
     // now return to try block?

}
所以我有5台服务器,也许在以后的阶段我会添加更多。所以我想连接到 他们中的任何人都是这样。我怎样才能返回到try块?java中是否有类似下面这样的语句

Server server = serverQueue.poll();
outerBlock:
try {
     if (server==null){return null}
     server.makeConnection();

} catch (Exception e) {
     // try another server
     server = serverQueue.poll();
     continue outerBlock;

}

您需要将
try
块放入一个简单的循环中,或者
while
或者
for
基本上是一个循环:

Server server = serverQueue.poll();
boolean connected = false;
while (!connected) {
    if (server == null) {
        return null;
    }
    try {
         server.makeConnection();
         connected = true;
    } catch (Exception e) {
         // Presumably log something here, for management info

         // try another server
         server = serverQueue.poll();
    }
}
或者为了避免重复:

Server server;
boolean connected = false;
while (!connected) {
    server = serverQueue.poll();
    if (server == null) {
        return null;
    }
    try {
         server.makeConnection();
         connected = true;
    } catch (Exception e) {
         // Presumably log something here, for management info
    }
}

您可以考虑将“查找服务器”部分隔离成自己的函数。

OU可以使用for循环

 Server server;     

for(int i=0;i<=numberOFServers-1;i++){
   server = serverQueue.poll();
      try {
           if (server==null){return null}
           server.makeConnection();

          } catch (Exception e) {

             System.out.println("Server : " +i+ " could not establish connection");
          }
 }
服务器;

对于(int i=0;我喜欢先将布尔值设置为false,然后在连接后将其设置为true,以及在一段时间内的所有设置?似乎有几种方法可以做到这一点,但您需要控制循环,并决定放弃。简短的回答是“使用Java循环语句”。除非使用循环,否则无法在Java中使控件向后跳转。