我正在做调度系统,它会产生一个随机的时间表,由于随机的方法,它会导致一些考试不能添加到时间表,它会导致堆栈溢出错误.... 但有时它能够产生完整的时间表。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