String url = getUrl();
try{
Connection con = getConnection(url, username, pwd);
}catch(ConnectionException e){
cleanUpUrl(url);
url = getUrl();
con = getConnection(url, username, pwd);
}
我必须做类似上面的事情。如果我没有通过一个网址获得连接,那么我会尝试使用另一个网址。同样的,我还有10个URL需要依次尝试。递归方法调用
我将如何递归编写该方法?
getUrl()
具有读取属性文件的逻辑,给你随机URL出10 cleanUpUrl(url)
有事情做与设置URL的到期时间,如果该URL是无效的,一些属性将被设置等等等。
编辑:对不起,我想我错过了什么。递归,因为我已经做了方法调用,直到(我得到连接)或(所有的URL都是无效的,并抛出了一个不同的异常)。循环10次可能没有帮助,因为getUrl()的随机逻辑可能会多次选择相同的URL。
以下是否有意义?
Connection con = null;
do{
String url = getUrl();
try{
Connection con = getConnection(url, username, pwd);
}catch(ConnectionException e){
cleanUpUrl(url);
continue;
}catch(Exception e){
return null;
}
}while(con !=null);
当所有的URL都无效时,getUrl()会抛出异常。
为什么你想要递归地做这件事? – 2010-08-10 12:19:42
递归原理之一是你需要一个停止条件。你需要定义你会做多少次尝试。如果您随机获取网址,则在检查全部10个网址之前,您可能会收到一个StackOverflow。 – 2010-08-10 12:36:48
@Fernando:同意。这里停止条件是 - 我得到一个连接或getUrl()抛出异常。 – HanuAthena 2010-08-10 12:39:42