Java异常 - 尝试第n次返回“try”语句块

时间:2012-06-27 00:50:31

标签: 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 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;

}

3 个答案:

答案 0 :(得分:0)

您需要将try块放在一个简单的循环中,whilefor

答案 1 :(得分:0)

基本上是一个循环:

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
    }
}

您可以考虑将其中的“查找服务器”部分隔离到其自己的功能中。

答案 2 :(得分:0)

你可以使用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");
          }
 }