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

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

Ответ

Проверяемое исключение (checked exception) — это исключение, которое компилятор Java обязывает либо обработать в блоке try-catch, либо объявить в сигнатуре метода с помощью throws. Все такие исключения являются подклассами java.lang.Exception, но не java.lang.RuntimeException.

Почему они существуют: Для обеспечения надежности кода, заставляя разработчика явно предусмотреть обработку ошибок, которые могут возникнуть во время выполнения (например, отсутствие файла, проблемы с сетью).

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

// Способ 1: Объявление в throws
public String readFirstLine(String filePath) throws IOException {
    return Files.readAllLines(Paths.get(filePath)).get(0); // Может выбросить IOException
}

// Способ 2: Обработка в try-catch
public String readFirstLineSafe(String filePath) {
    try {
        return Files.readAllLines(Paths.get(filePath)).get(0);
    } catch (IOException e) { // Обработка проверяемого исключения
        System.err.println("Ошибка чтения файла: " + e.getMessage());
        return "";
    }
}

Типичные примеры: IOException, SQLException, ClassNotFoundException. В отличие от них, непроверяемые исключения (RuntimeException и его наследники, например, NullPointerException) не требуют обязательной декларации.