Конструкция 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.