Приведи примеры, где ты использовал проверяемые исключения (checked exceptions) в своём коде.
Ответ от нейросети
sobes.tech AI
Что хотят услышать интервьюеры:
Понимание, зачем в Java вообще нужны checked exceptions и когда их уместно использовать. Важно показать, что такие исключения применяются для ожидаемых и обрабатываемых ошибок, которые нельзя игнорировать на уровне контракта API. Хороший ответ обычно содержит практический пример из файловой, сетевой или интеграционной логики.
Определение:
Checked exceptions — это исключения, которые компилятор заставляет либо обработать через try/catch, либо явно объявить в сигнатуре метода через throws. Их используют для ситуаций, где ошибка предсказуема и вызывающий код должен принять решение: retry, fallback, показать сообщение пользователю или корректно завершить операцию.
Пример использования:
Чаще всего checked exceptions встречались при работе с файлами, сетевыми запросами и внешними API. Например, при чтении конфигурации из файла метод может выбрасывать IOException, потому что файл может отсутствовать, быть недоступен или повреждён.
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class ConfigLoader {
public String loadFirstLine(String path) throws IOException {
try (BufferedReader reader = new BufferedReader(new FileReader(path))) {
return reader.readLine();
}
}
public void printConfig(String path) {
try {
String line = loadFirstLine(path);
System.out.println("Config: " + line);
} catch (IOException e) {
System.out.println("Не удалось прочитать конфиг: " + e.getMessage());
}
}
}
Пояснение кода:
Код показывает типичный случай, где checked exception оправдан. Метод loadFirstLine не знает, как именно приложение должно реагировать на ошибку чтения файла, поэтому он только сообщает о проблеме через throws IOException. Метод printConfig уже находится на уровне, где можно принять решение: обработать ошибку и вывести сообщение.
Шаги работы:
loadFirstLineоткрывает файл черезFileReader.- Если файл недоступен или чтение ломается, возникает
IOException. - В
try-with-resourcesпоток закрывается автоматически. printConfigвызывает метод и перехватывает исключение.- На уровне вызывающего кода можно заменить вывод на логирование, повторную попытку или дефолтное значение.
Ключевые моменты:
- Checked exceptions уместны там, где ошибка ожидаема и у вызывающего кода есть осмысленная стратегия реакции.
- Они являются частью контракта метода и заставляют явно думать об обработке ошибок.
- Частые примеры:
IOException,SQLException, ошибки работы с внешними ресурсами. - Не стоит использовать checked exceptions для всего подряд: это может засорять API и усложнять код.
- В бизнес-логике и внутренних слоях иногда предпочтительнее unchecked exceptions, если ошибка означает нарушение инварианта, а не нормальную ожидаемую ситуацию.
- На собеседовании полезно показать не только факт использования, но и объяснить, почему именно checked exception был выбран в конкретном месте.