Почему может быть объявлен метод, который генерирует много исключений, даже если ни одно из них не выброшено?

Я слил свой исходный код с кодом коллеги и увидел, что он добавил исключение, которое будет добавлено в объявление метода; однако я знал, что это исключение никогда не будет на самом деле выброшено из этого метода.

Я удивляюсь, почему компилятор не предупредил меня о "объявленном не сгенерированном исключении" (или о чем-то подобном). Я понимаю, что вы можете объявить метод, генерирующий N исключений, даже если ни одно из этих исключений не было сгенерировано кодом в методе.

Это почему?

public void foo() throws IOException, IntrospectionException,  BadStringOperationException, ... {
    //do nothing
}

1 ответ

  1. Подклассы, которые переопределяют метод, могут вызвать исключение, даже если его суперкласс не делает.
  2. Позже вы можете изменить метод, чтобы выбрасывать одно из перечисленных исключений при сохранении обратной совместимости.
Другие вопросы по тегам