Ответ
IOException — это проверяемое исключение (checked exception) в Java, сигнализирующее об ошибке операции ввода-вывода. Является базовым классом для множества более специфичных IO-исключений.
Типичные причины:
- Файл не найден (
FileNotFoundException). - Отказ сетевого соединения (
SocketException,ConnectException). - Попытка чтения после закрытия потока.
- Ошибки доступа к файлу (отсутствие прав).
- Достигнут конец потока (
EOFException).
Пример обработки при чтении файла:
import java.io.*;
public class IOExceptionExample {
public static void main(String[] args) {
try (BufferedReader reader = new BufferedReader(new FileReader("data.txt"))) {
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (FileNotFoundException e) {
System.err.println("Файл не найден: " + e.getMessage());
} catch (IOException e) { // Ловим базовое IOException
System.err.println("Произошла ошибка ввода-вывода: " + e.getMessage());
}
}
}
Важные особенности:
- Проверяемое исключение: Компилятор требует его обработки (блок
try-catch) или объявления в сигнатуре метода (throws IOException). - Использование try-with-resources: Конструкция
try-with-resources(как в примере) гарантирует автоматическое закрытие потоков, что помогает избежать утечек ресурсов и связанных с нимиIOException. - Иерархия: Все конкретные IO-исключения наследуются от
IOException, что позволяет ловить их все одним блокомcatch, но при необходимости обрабатывать специфичные случаи отдельно.