Java: приводит ли бесконечный цикл в конечном итоге к StackruError?
В настоящее время я проверяю свой OCPJP 6 с помощью рецензента Sierra & Bates. Я наткнулся на вопрос о бесконечном цикле, не генерирующем StackruError. Насколько я узнал, это должно бросить это в конечном счете.
Пожалуйста, обратитесь к этому PDF для вопроса: https://java.net/downloads/jfjug/SCJP%20Sun%20Certified%20Programmer%20for%20Java%206-0071591060.pdf
Вопрос, который я имею в виду, взят из самопроверки, Глава 5, Вопрос 9 (стр. 455 в PDF).
Я ответил, CDF. Правильный ответ, согласно книге, был DF. Там также объяснялось, что случай 0 инициирует бесконечный цикл, а не StackruError.
Правда, он запускает бесконечный цикл, но в итоге оказывается StackruError. Ответ C гласил: "Может вызвать ошибку StackruError", поэтому я знал, что C был прав.
Если я не прав, кто-нибудь может объяснить, почему?
2 ответа
Так как в этом цикле вы на самом деле не вызываете методы, которые должны вызывать другие методы (в виде рекурсии), вы не добавляете больше вызовов в стек. Вы просто повторяете шаги, которые вы выполняли каждый раз.
Так какStackruError
вызывается только в определенных условиях, а именно при вызове другого метода (который вызовет больше методов) или выделении большего количества элементов в стеке, тогда на самом деле нет никакого способа, которым этот конкретный цикл мог бы вызвать такую ошибку.
The stack overflows is commonly :- excessively deep or infinite recursion.
In simple terms,for an example: calling a method within a method.
public static void proneToStackOverFlow() {
proneToStackOverFlow();
}
public static void main(String[] args)
{
proneToStackOverFlow();
}