Ответ
Основная альтернатива try-with-resources (Java 7+) — это ручное управление ресурсами с помощью блока try-finally.
1. Ручное закрытие в finally (Java 6 и ранее):
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader("file.txt"));
// работа с ресурсом
} finally {
if (br != null) {
try {
br.close();
} catch (IOException e) {
// обработка ошибки закрытия
}
}
}
Почему try-with-resources лучше: Автоматически закрывает все ресурсы, реализующие AutoCloseable, корректно подавляет исключения и более читаем.
2. Использование метода use() в Kotlin:
FileInputStream("file.txt").use { input ->
// работа с ресурсом
}
3. Для классов без AutoCloseable: Можно создать обёртку, реализующую этот интерфейс, или по-прежнему использовать ручное управление в finally.