Обязательно ли возникнет ошибка компиляции, если у метода есть объявление throws и вызывающий код её не обрабатывает?

В Java, если метод объявляет checked исключение через throws, то вызывающий код обязан либо обработать это исключение (try-catch), либо также объявить throws в своей сигнатуре.

Короткий ответ

Что ответить на собеседовании

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

Подробный разбор

Ответ с пояснениями

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

Однако, если метод объявляет unchecked исключение (наследник RuntimeException), то компилятор не требует обязательной обработки, и ошибки компиляции не будет.

Пример:

public void method() throws IOException { }

public void caller() {
    method(); // Ошибка компиляции, если не обработать IOException
}

public void callerHandled() {
    try {
        method();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

Таким образом, ошибка компиляции возникает только если не обработано checked исключение, объявленное в throws.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее