2014-11-15 75 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