1

サーバーがダウンしているために例外をスローする可能性のある呼び出しを行おうとしています。これは私が達成したいことです:

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;

}
4

3 に答える 3

0

ブロックを、またはのいずれかtryの単純なループ内に配置する必要があります。whilefor

于 2012-06-27T00:56:02.193 に答える
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
    }
}

その「サーバーの検索」部分を独自の機能に分離することを検討してください。

于 2012-06-27T01:02:07.200 に答える
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");
          }
 }
于 2012-06-27T01:02:33.027 に答える