try-with-resources
Заявление.
try-with-resources statement
Является try
утверждение , что говорит один или несколько ресурсов. A resource
- это объект, который необходимо закрыть после того, как программа завершит работу с ним. try-with-resources statement
Гарантирует , что каждый ресурс закрыт в конце заявления. Любой реализующий объект java.lang.AutoCloseable
, который включает в себя все реализующие объекты java.io.Closeable
, может использоваться как ресурс.
В следующем примере считывается первая строка из файла. Он использует экземпляр BufferedReader
для чтения данных из файла. BufferedReader
- это ресурс, который необходимо закрыть после того, как программа завершит работу с ним:
static String readFirstLineFromFile(String path) throws IOException {
try (BufferedReader br =
new BufferedReader(new FileReader(path))) {
return br.readLine();
}
}
В этом примере ресурс, объявленный в инструкции try-with-resources, является BufferedReader. Оператор объявления появляется в круглых скобках сразу после ключевого слова try. Класс BufferedReader
в Java SE 7 и новее реализует интерфейс java.lang.AutoCloseable
. Поскольку BufferedReader
экземпляр объявлен в операторе try-with-resource, он будет закрыт независимо от того, завершается ли оператор try нормально или внезапно (в результате того, что метод BufferedReader.readLine
выбрасывает IOException
).
До Java SE 7 можно было использовать finally
блок, чтобы гарантировать, что ресурс закрыт, независимо от того, завершается ли оператор try нормально или внезапно. В следующем примере finally
вместо try-with-resources
оператора используется блок :
static String readFirstLineFromFileWithFinallyBlock(String path)
throws IOException {
BufferedReader br = new BufferedReader(new FileReader(path));
try {
return br.readLine();
} finally {
if (br != null) br.close();
}
}
Пожалуйста , обратитесь к документации .