2014-11-15 2 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, в котором i 'Получение объекта, брошенного блоком try. –

+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

«Ошибка - это подкласс Throwable, который указывает на серьезные проблемы, которые разумное приложение не должно пытаться поймать». - https://docs.oracle.com/javase/7/docs/api/java/lang/Error.html – DanielGibbs

+0

Я отвечаю на вопрос, ребята ... – dieend

Смежные вопросы