This question already has answers here:
What is a StackOverflowError?
(14个回答)
3年前关闭。
我编写了提取网页上所有链接的代码。我检查Arraylist以防止出现相同的链接。但是,如果站点上的链接太多,则会出现stackoverflow错误。我将链接保留在Arraylist中,以备后用。如何避免此stackoverflow错误?
问题的原因可能是arraylist吗?
(14个回答)
3年前关闭。
我编写了提取网页上所有链接的代码。我检查Arraylist以防止出现相同的链接。但是,如果站点上的链接太多,则会出现stackoverflow错误。我将链接保留在Arraylist中,以备后用。如何避免此stackoverflow错误?
问题的原因可能是arraylist吗?
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