簡體   English   中英

Java異常-嘗試第n次返回“ try”語句塊

[英]Java exceptions - try for the n'th time to return to the “try” statement block

我正在嘗試撥打可能由於服務器停機而引發異常的呼叫。 這是我要完成的工作:

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塊放入whilefor的簡單循環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
    }
}

您可以考慮將其“查找服務器”部分隔離到其自身的功能中。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM