This question already has answers here:
What is a StackOverflowError?

(14个回答)


3年前关闭。




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

java - 如何解决StackOverflow错误?-LMLPHP

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);
   }
}

最佳答案

当taramaTuru是DetaylıTarama时

if (taramaTuru.equals("Detaylı Tarama"))将始终为真。

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

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

关于java - 如何解决StackOverflow错误? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41960945/

10-11 05:51