Добавить в корзинуПозвонить
Найти в Дзене
Java

✔️ Java-совет, который спасает от тихих утечек ресурсов

Если работаете с BufferedReader, InputStream, OutputStream, FileReader, соединениями или другими ресурсами, которые нужно закрывать, используйте try-with-resources. Плохо: BufferedReader reader = new BufferedReader(new FileReader("data.txt")); String line; while ((line = reader.readLine()) != null) { System.out.println(line); } reader.close(); На первый взгляд всё нормально. Но если внутри чтения файла вылетит исключение, reader.close() может не выполниться. В итоге останутся открытые file handles, stream’ы или соединения. Лучше так: try (BufferedReader reader = new BufferedReader(new FileReader("data.txt"))) { String line; while ((line = reader.readLine()) != null) { System.out.println(line); } } try-with-resources автоматически вызовет close() даже при исключении. Почему это важно: * не нужен ручной finally * меньше boilerplate-кода * ниже риск утечек ресурсов * код проще читать * безопаснее работать с файлами, сетью и БД Правило простое: если объект реализует AutoClose

✔️ Java-совет, который спасает от тихих утечек ресурсов.

Если работаете с BufferedReader, InputStream, OutputStream, FileReader, соединениями или другими ресурсами, которые нужно закрывать, используйте try-with-resources.

Плохо:

BufferedReader reader = new BufferedReader(new FileReader("data.txt"));

String line;

while ((line = reader.readLine()) != null) {

System.out.println(line);

}

reader.close();

На первый взгляд всё нормально.

Но если внутри чтения файла вылетит исключение, reader.close() может не выполниться. В итоге останутся открытые file handles, stream’ы или соединения.

Лучше так:

try (BufferedReader reader =

new BufferedReader(new FileReader("data.txt"))) {

String line;

while ((line = reader.readLine()) != null) {

System.out.println(line);

}

}

try-with-resources автоматически вызовет close() даже при исключении.

Почему это важно:

* не нужен ручной finally

* меньше boilerplate-кода

* ниже риск утечек ресурсов

* код проще читать

* безопаснее работать с файлами, сетью и БД

Правило простое:

если объект реализует AutoCloseable или Closeable, почти всегда стоит использовать try-with-resources.

Это одна из тех привычек, которые делают Java-код чище и надёжнее.