В каких случаях в Java применяются проверяемые исключения (checked exceptions)?

«В каких случаях в Java применяются проверяемые исключения (checked exceptions)?» — вопрос из категории Java Core, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Проверяемые исключения (checked exceptions) в Java используются для обработки ошибок, которые программа может и должна предвидеть и корректно обработать. Они наследуются от java.lang.Exception, но не от java.lang.RuntimeException. Компилятор требует их явной обработки через try-catch или объявления в сигнатуре метода с помощью throws.

Основные сценарии использования:

  • Операции ввода-вывода (I/O): FileNotFoundException, IOException при работе с файлами или потоками.
  • Работа с базами данных и сетью: SQLException, SocketException.
  • Рефлексия и загрузка классов: ClassNotFoundException, NoSuchMethodException.
  • Парсинг данных: ParseException.

Пример обработки:

try {
    FileReader reader = new FileReader("data.txt");
    // чтение файла
} catch (FileNotFoundException e) {
    // Восстановление: логирование и создание файла по умолчанию
    System.err.println("Файл не найден, используется конфигурация по умолчанию.");
}

Почему их используют: Они повышают надежность кода, заставляя разработчика явно предусмотреть сценарии восстановления после ожидаемых сбоев. Однако чрезмерное их применение может привести к загромождению кода блоками try-catch.