Что произойдёт в Java, если не обработать проверяемое исключение (checked exception)?

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

Ответ

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

Пример ошибки компиляции:

import java.io.*;

public void readFile() {
    FileReader file = new FileReader("test.txt"); // ОШИБКА КОМПИЛЯЦИИ
}

Сообщение об ошибке:

unreported exception java.io.FileNotFoundException;
must be caught or declared to be thrown

Способы исправления:

  1. Обработка через try-catch:
    public void readFile() {
        try {
            FileReader file = new FileReader("test.txt");
        } catch (FileNotFoundException e) {
            // Обработка исключения
            e.printStackTrace();
        }
    }
  2. Объявление в сигнатуре метода (проброс):
    public void readFile() throws FileNotFoundException {
        FileReader file = new FileReader("test.txt");
    }

Что такое проверяемые исключения? Это классы, унаследованные от Exception, но не от RuntimeException. Примеры: IOException, SQLException, ClassNotFoundException. Непроверяемые исключения (RuntimeException и его наследники, например, NullPointerException) не требуют обязательной обработки на этапе компиляции.