如何解决StackOverflow错误?

时间:2017-01-31 15:09:25

标签: java arraylist stack-overflow

我编写的代码可以提取网页上的所有链接。我检查Arraylist以防止出现相同的链接。但是如果网站上的链接太多,我会收到stackoverflow错误。我在Arraylist中保留链接供以后使用。如何避免此stackoverflow错误? 这个问题的原因可能是arraylist吗?

StackOverFlow Error

static ArrayList<String> linkleriTut = new ArrayList();    

public void linkleriCek(String url, String taramaTuru) throws IOException{
   try {
      Document doc = Jsoup.connect(url).get();
      Elements linkler = doc.select("a[href]");
      for (Element link : linkler) {
         if (!linkleriTut.contains(link.attr("abs:href"))) {
            linkleriTut.add(link.attr("abs:href"));
         }
      }
   }
}
catch (Exception e) {
}
if (taramaTuru.equals("Detaylı Tarama")) {
   while (k < linkleriTut.size()) {
      k++;
      linkleriCek(linkleriTut.get(k), taramaTuru);
   }
}

1 个答案:

答案 0 :(得分:1)

当taramaTuru是DetaylıTarama时

if (taramaTuru.equals("Detaylı Tarama"))永远都是真的。

因此,linkleriTut中的每个条目都会再次调用linkleriCek(linkleriTut.get(k), taramaTuru)

这将在初始循环之后再次看到(taramaTuru.equals("Detaylı Tarama")) == true,因此您的方法会一次又一次地调用自身,从而导致StackOverFlowError