2014-11-15 103 views
0

我正在做調度系統,它會產生一個隨機的時間表,由於隨機的方法,它會導致一些考試不能添加到時間表,它會導致堆棧溢出錯誤.... 但有時它能夠產生完整的時間表。Java生成隨機解決方案

所以我想我怎麼可以這樣做在這裏問:

if result == stack over flow error { 
    redo the function 
} 
+0

您應該修復stackoverflow錯誤。 – BobTheBuilder

+0

這是一個非常糟糕的主意。如果你有堆棧溢出錯誤,那是因爲你有太多的堆棧調用(遞歸?)。使用不同的實現(a.k.a用循環和堆棧集合替換遞歸)。 – sturcotte06

+0

錯誤是無法避免的,因爲考試是隨機添加到時間表它取決於運氣 – user3832964

回答

0

在您的程序中使用stackoverflow錯誤並更改使用catch的執行流是個壞主意。
但是如果你想這樣做,你可以像這樣在try catch塊中包圍你的代碼。

try{ 
//your code that is likely to produce stackoverflow error 
} 
catch(StackOverflowError se) 
{ 
//do whatever you want after stackover flow. 
} 
+0

我可以知道它的用途嗎? – user3832964

+0

try塊所引發的任何事情都必須被catch塊捕獲,所以你必須指定一個引用名稱,在該引用名稱中你將得到由try塊引發的對象。在這種情況下,我指定了名稱爲se,其中我正在嘗試阻止拋出的對象。 –

+0

你可以在這裏閱讀java中的異常處理http://www.javatpoint.com/exception-handling-in-java –

-1

趕上StackOverflowError異常。

boolean success = true; 
do { 
    try { 
    success = true; 
    someRecursiveFunction(); 
    } catch (StackOverflowError e) { 
    success = false; 
    } 
} while (!success); 
+0

這不是一個解決方案。錯誤是爲了使JVM崩潰。 – sturcotte06

+1

「An Error是Throwable的一個子類,它指示合理的應用程序不應該試圖捕獲的嚴重問題。」 - https://docs.oracle.com/javase/7/docs/api/java/lang/Error.html – DanielGibbs

+0

我回答了這個問題,夥計們...... – dieend