2013-03-16 224 views
-8
public bool update(registrationcommon objreg) 
    { 
     Userdl objuser = new Userdl(); 
     try 
     { 
      return update(objreg); 

     } 
     catch (Exception e) 
     { 
      throw e; 
     } 
    } 
+1

你有沒有想過你的問題和你的方法做什麼? – 2013-03-16 10:13:29

+2

除了你有的遞歸調用問題之外,代碼中絕對沒有像catch(Exception e){throw e; }'。如果您不打算處理它並重新拋出它,請不要發現異常。你也可以自動讓異常冒泡。 (另外,當你*重新拋出時,省略聲明中的'e'部分。) – 2013-03-16 10:15:02

+3

關於你向我們展示的代碼片段沒有太多正確的東西,它沒有任何意義。 – 2013-03-16 10:22:36

回答

1

這是因爲你在遞歸調用update功能,而無需停止:

public bool update(registrationcommon objreg) 
{ 
    // ... 
    return update(objreg); 
    // ... 
} 

你有一些終止它點。

2

好吧,它會的。假設Userdl是子類或registrationcommon的實現,您的方法會無條件地調用它自己。 (順便提一下,你應該考慮改進你所有的名字。)

你怎麼會期望終止?想必你打算撥打不同的update方法 - 所以想想你想調用哪種方法,以及如何調用它。這是一種不同類別的方法嗎?同一個類但有不同參數的方法?

0

我想,你可以調用遞歸方法而不退出條件 - 這是一個問題!

0

每個update調用update,它調用update,這...

每次你調用一個方法的時候,您的當前位置被壓入堆棧。在正常情況下,當您從方法調用中返回時,可以從堆棧中「彈出」並返回到原來的位置。但是,如果您在像例子這樣的循環中執行此操作,則堆棧最終會溢出。因此術語「堆棧溢出」。