递归方法调用

时间:2010-08-10 12:18:00

标签: java recursion

String url = getUrl();
try{
Connection con = getConnection(url, username, pwd);
}catch(ConnectionException e){
  cleanUpUrl(url);
  url = getUrl();
  con = getConnection(url, username, pwd);
}

我要做上面的事情。如果我没有获得一个URL的连接,那么我将尝试使用另一个URL。同样有10URL我要一个接一个地尝试。

如何以递归方式编写方法?

getUrl()具有读取属性文件的逻辑,并为您提供10个随机URL。 cleanUpUrl(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);

当所有网址无效时,getUrl()将抛出异常。

3 个答案:

答案 0 :(得分:6)

递归?为什么呢?

如果你想连续尝试10件事,请使用for循环。

答案 1 :(得分:1)

我会在方法中放置“搜索正确的url”,循环代码10次,然后返回你发现适合打破循环的url。 (在循环下方,您可以返回null以指示10个网址中没有一个是合适的。)

这样的东西
public String findGoodUrl() {
    for (int i = 0; i < 10; i++) {
        String url = getUrl();
        try{
            Connection con = getConnection(url, username, pwd);
            return url;
        } catch(ConnectionException e) {
            cleanUpUrl(url);
        }
    }
    return null;
}

答案 2 :(得分:1)

什么是停止条件,堆栈溢出?

如果你创建了一个“while”循环会不会很重要?