Назад к вопросам
СБЕР
Senior
6
```java public class DoWork { public static void main(String[] args) { work(); } public static void work() { try { work(); } finally { work(); } } } ```
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Данный код содержит бесконечную рекурсию, которая приведёт к переполнению стека (StackOverflowError).
Объяснение:
- Метод
work()вызывает сам себя в блокеtry. - После завершения блока
tryвыполняется блокfinally, в котором снова вызываетсяwork().
Таким образом, при каждом вызове work() происходит два новых вызова work(): один в try и один в finally, что приводит к экспоненциальному росту вызовов и быстрому переполнению стека.
Пример ошибки при запуске:
Exception in thread "main" java.lang.StackOverflowError
at DoWork.work(DoWork.java:...)
...
Такой код не должен использоваться без условий выхода из рекурсии.