Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Java: try, catch, finally, resources

В чем разница между try-with-resources и try-catch-finally при работе с ресурсами?

Этот вопрос демонстрирует преимущества автоматического управления ресурсами с помощью конструкции try-with-resources.

Короткий ответ

try-with-resources автоматически закрывает ресурсы, такие как потоки или файлы, после завершения блока. В try-catch-finally закрытие ресурсов нужно обрабатывать вручную в блоке finally, что увеличивает объем кода и может привести к ошибкам.

Длинный ответ

Когда вы работаете с ресурсами, такими как файлы или потоки, их нужно правильно закрывать, чтобы избежать утечек.

try-with-resources

Позволяет автоматически закрывать ресурсы, реализующие интерфейс AutoCloseable.

Синтаксис проще, так как не требуется явное закрытие ресурсов.

Пример:

try (BufferedReader br = new BufferedReader(new FileReader("file.txt"))) {
    	System.out.println(br.readLine());
} catch (IOException e) {
    	e.printStackTrace();
}

try-catch-finally

Требует явного закрытия ресурсов в блоке finally, что увеличивает объем кода и вероятность ошибок.

Пример:

BufferedReader br = null;
try {
    	br = new BufferedReader(new FileReader("file.txt"));
    	System.out.println(br.readLine());
} catch (IOException e) {
    	e.printStackTrace();
} finally {
    	if (br != null) {
        	try {
            		br.close();
        	} catch (IOException e) {
            		e.printStackTrace();
        	}
    	}
}

Когда использовать

  • Используйте try-with-resources, если работаете с ресурсами, поддерживающими AutoCloseable. Это минимизирует риск утечек ресурсов.

  • Используйте try-catch-finally в случаях, когда требуется особая логика при закрытии ресурсов, не поддерживающих автоматическое управление.

  • try-with-resources предпочтительнее для большинства случаев, так как он упрощает код и уменьшает вероятность ошибок.

  • Аватар

    Android Guru

    Anton Gulyaev

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    2

  • Сложность:

    6

Навыки

  • Java

    Java

Ключевые слова

#try

#catch

#finally

#resources

Подпишись на Java Developer в телеграм

  • Аватар

    Android Guru

    Anton Gulyaev

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.