我正在做調度系統,它會產生一個隨機的時間表,由於隨機的方法,它會導致一些考試不能添加到時間表,它會導致堆棧溢出錯誤.... 但有時它能夠產生完整的時間表。Java生成隨機解決方案
所以我想我怎麼可以這樣做在這裏問:
if result == stack over flow error {
redo the function
}
我正在做調度系統,它會產生一個隨機的時間表,由於隨機的方法,它會導致一些考試不能添加到時間表,它會導致堆棧溢出錯誤.... 但有時它能夠產生完整的時間表。Java生成隨機解決方案
所以我想我怎麼可以這樣做在這裏問:
if result == stack over flow error {
redo the function
}
在您的程序中使用stackoverflow錯誤並更改使用catch的執行流是個壞主意。
但是如果你想這樣做,你可以像這樣在try catch
塊中包圍你的代碼。
try{
//your code that is likely to produce stackoverflow error
}
catch(StackOverflowError se)
{
//do whatever you want after stackover flow.
}
我可以知道它的用途嗎? – user3832964
try塊所引發的任何事情都必須被catch塊捕獲,所以你必須指定一個引用名稱,在該引用名稱中你將得到由try塊引發的對象。在這種情況下,我指定了名稱爲se,其中我正在嘗試阻止拋出的對象。 –
你可以在這裏閱讀java中的異常處理http://www.javatpoint.com/exception-handling-in-java –
趕上StackOverflowError異常。
boolean success = true;
do {
try {
success = true;
someRecursiveFunction();
} catch (StackOverflowError e) {
success = false;
}
} while (!success);
這不是一個解決方案。錯誤是爲了使JVM崩潰。 – sturcotte06
「An Error是Throwable的一個子類,它指示合理的應用程序不應該試圖捕獲的嚴重問題。」 - https://docs.oracle.com/javase/7/docs/api/java/lang/Error.html – DanielGibbs
我回答了這個問題,夥計們...... – dieend
您應該修復stackoverflow錯誤。 – BobTheBuilder
這是一個非常糟糕的主意。如果你有堆棧溢出錯誤,那是因爲你有太多的堆棧調用(遞歸?)。使用不同的實現(a.k.a用循環和堆棧集合替換遞歸)。 – sturcotte06
錯誤是無法避免的,因爲考試是隨機添加到時間表它取決於運氣 – user3832964