Встречается на собеседованиях • сегодня

Всегда ли закроются ресурсы в блоке finally у try/catch

Блок finally гарантированно выполнится, но ресурсы не закроются автоматически. Для корректного закрытия ресурсов нужно явно вызывать .close() в finally или использовать try-with-resources (Java 7+), который автоматически закрывает ресурсы, реализующие AutoCloseable.

Пример без автоматического закрытия:

java
FileInputStream fis = null;
try {
    fis = new FileInputStream("file.txt");
    // работа с файлом
} finally {
    if (fis != null) {
        fis.close(); // нужно закрывать вручную
    }
}

Пример с try-with-resources (рекомендуемый способ):

java
try (FileInputStream fis = new FileInputStream("file.txt")) {
    // работа с файлом
} // ресурс закроется автоматически

Важно: если в finally произойдет исключение при закрытии, оно может перезаписать оригинальное исключение.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы