Ответ
Checked исключения в Java — это исключения, которые компилятор проверяет на этапе компиляции. Они используются для ожидаемых ошибок, от которых программа может восстановиться. Классы checked исключений наследуются от Exception, но не от RuntimeException.
Когда использовать:
- Ошибки ввода-вывода (файл не найден, сетевой сбой).
- Ошибки парсинга/валидации данных.
- Когда требуется, чтобы вызывающий код явно обработал исключительную ситуацию (через
try-catch) или объявил его вthrows.
Пример (обязательная обработка):
// Метод объявляет checked исключение
public String readFirstLine(String filePath) throws IOException {
return Files.readAllLines(Paths.get(filePath)).get(0);
}
// Вызывающий код должен его обработать
public void processFile() {
try {
String line = readFirstLine("data.txt");
} catch (IOException e) { // Обязательный catch
System.err.println("Файл не найден или ошибка чтения");
}
}
Почему и критика:
- Цель: Принудить разработчика к обработке предсказуемых ошибок, повышая надежность.
- Критика: Часто приводит к раздуванию кода
try-catch/throws. В современных фреймворках и библиотеках (Spring, JPA) предпочтение отдается unchecked исключениям (RuntimeException).