2013-12-07 3 views
0
 public Boolean UpdateKontrol2() { 
     page2 = fbclient.fetchObject(data[sayfasayisi][0], Page.class); 

     pageposts7 = fbclient.fetchConnection(page2.getId() + "/feed", 
        Post.class, Parameter.with("since", "05-12-2013"), Parameter.with("type", "post")); 
     pageposts5 = fbclient.fetchConnection(page2.getId() + "/feed", 
        Post.class, Parameter.with("since", "05-12-2013"), Parameter.with("type", "post")); 

     pageposts9 = fbclient.fetchConnection(page2.getId() + "/feed", 
        Post.class, Parameter.with("since", "05-12-2013"), Parameter.with("type", "post")); 
     // some fetch operations like this : 
     update[i - r][0][sayfasayisi] = pageposts5.getData().get(yukarıgecici2).getMessage(); 
     // some control operations here 
     if (sayfasayisi == boyut) { 
     sayfasayisi = 0; 
     long finishdate = System.currentTimeMillis(); 
     long result =finishdate - datestart ; 
     if (result<3600000) { 
      try { 
       Thread.sleep(3600000-result); 
      } catch (InterruptedException ex) { 
       Logger.getLogger(UpdateDeneme.class.getName()).log(Level.SEVERE, null, ex); 
      } 
     } 
    } 
    return UpdateKontrol2(); 

Мой код работает нормально, но через 8 или 9 часов я получаю ошибку StackOverFlow. Как я могу это исправить?StackOverflowError Как я могу это решить?

ответ

0

Это рекурсивная функция, но нет оснований для возврата. Другими словами, у вас есть этот код, который возвращает логическое значение, но вы никогда не возвращаете фактическое логическое значение, вы возвращаете только функцию. Похоже, вы пытаетесь сделать что-то итеративно, но у вас нет условия выхода ... в основном бесконечный цикл.

+0

thanx bro, я понял свою ошибку, но все же хочу спросить, если я использую метод типа void, и я пишу только «UpdateKontrol2()» вместо возврата метода UpdateKontrol2(). Возникает любая ошибка stackoverflow? – user3077045

+1

Вы получите тот же результат. Вы вызываете один и тот же метод в конце самого себя, никогда не возвращаетесь/выходите из него, потому что сама функция вызывает ВСЕГДА последнее, что она делает, что приводит к переполнению стека. Единственная причина, почему это так долго, - это то, что у вас есть вызов Thread.sleep. – BrDaHa

Смежные вопросы