我正在尝试拨打一个可能因服务器停机而引发异常的电话。 这就是我想要完成的事情:
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;
}
答案 0 :(得分:0)
您需要将try
块放在一个简单的循环中,while
或for
。
答案 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");
}
}