Что такое проверяемые исключения (checked exceptions) в Java и как с ними работать?

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

Ответ

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

Ключевые аспекты работы:

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

Пример:

// Метод объявляет проверяемое исключение
public String readFile(String path) throws IOException {
    return Files.readString(Paths.get(path));
}

// Вызывающий код обязан его обработать
public void processFile() {
    try {
        String content = readFile("data.txt");
    } catch (IOException e) {
        // Восстановление: логирование и использование значения по умолчанию
        System.err.println("File not found, using default.");
        content = "default";
    }
}