Может ли лямбда-выражение в Java выбрасывать проверяемое исключение?

Лямбда-выражение в Java может выбрасывать проверяемое исключение, только если функциональный интерфейс, который оно реализует, объявляет это исключение в своем сигнатуре метода.

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

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

Лямбда-выражение в Java может выбрасывать проверяемое исключение, только если функциональный интерфейс, который оно реализует, объявляет это исключение в своем сигнатуре метода.

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

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

Лямбда-выражение в Java может выбрасывать проверяемое исключение, только если функциональный интерфейс, который оно реализует, объявляет это исключение в своем сигнатуре метода.

Например, если интерфейс метода содержит throws IOException, то лямбда может бросать это исключение. Если же метод интерфейса не объявляет проверяемых исключений, то лямбда не может их выбрасывать.

Пример:

@FunctionalInterface
interface IOFunction {
    void run() throws IOException;
}

IOFunction func = () -> {
    if (true) {
        throw new IOException("Ошибка");
    }
};

Если интерфейс не объявляет исключения, то компилятор не позволит бросать проверяемые исключения внутри лямбды.

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

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

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

Подробнее