Назад к вопросам
JuniorТеорияЧасто
Что выведет программа?
public class Main {
public static void main(String[] args) {
try (Door a = new Door("A"); Door b = new Door("B")) {
System.out.print(a.name() + b.name() + " ");
}
}
}
record Door(String name) implements AutoCloseable {
public void close() { System.out.print(name); }
}AB BA
- Ждать
AB AB: ресурсы закрываются не в порядке объявления, а в обратном — последний открытый первым. - Ждать ошибку компиляции из-за отсутствия
catch:AutoCloseable.close()объявлен сthrows Exception, ноDoor.close()ничего не объявляет, и ловить нечего.
- Почему try-with-resources закрывает ресурсы в обратном порядке?
- Что будет, если исключение бросят и тело блока, и
close()?