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();
        }
Другие вопросы по тегам