Конструкция try-with-resources
Конструкцию try-with-resources ввели в Java 7. Она дает возможность объявлять один или несколько ресурсов в блоке try, которые будут закрыты автоматически без использования finally блока.
В качестве ресурса можно использовать любой объект, класс которого реализует интерфейс java.lang.AutoCloseable или java.io.Closable.
Если try блок также выбрасывает исключение, оно побеждает, а исключение из close() метода подавляется.
Пример 1. Использование блока finally для закрытия ресурса
public static String readFirstLineFromFileWithFinallyBlock(String path)
throws IOException {
BufferedReader br = new BufferedReader(new FileReader(path));
try {
return br.readLine();
} finally {
if (br != null) {
br.close();
}
}
}
Перепишем этот блок используя конструкцию try-with-resources:
Пример 2. Использование конструкции try-with-resources для закрытия ресурса
public static String readFirstLineFromFile(String path) throws IOException {
try (BufferedReader br =
new BufferedReader(new FileReader(path))) {
return br.readLine();
}
}
Пример 3. Использование конструкции try-with-resources для закрытия нескольких ресурсов
public static String readFirstLineFromFile2(String path)
throws IOException {
try (FileReader f = new FileReader("a.txt");
BufferedReader br = new BufferedReader(f)) {
return br.readLine();
}
}
Please log in or register to have a possibility to add comment.