Нужно ли обрабатывать исключение, если метод объявлен с throws?

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

Ответ

Нет, обработка не обязательна, но исключение должно быть объявлено. Ключевое слово throws в сигнатуре метода указывает, что метод может сгенерировать проверяемое (checked) исключение и не обрабатывает его внутри.

Ваши варианты:

  1. Пробросить дальше: Объявить это же исключение в вызывающем методе.
    void caller() throws IOException {
        callee(); // Метод с throws IOException
    }
  2. Обработать на месте: Использовать try-catch в вызывающем методе.
    void caller() {
        try {
            callee();
        } catch (IOException e) {
            // Обработка
        }
    }

Для непроверяемых исключений (RuntimeException) использование throws не требуется и носит лишь документационный характер.