Почему может быть объявлен метод, который генерирует много исключений, даже если ни одно из них не выброшено?
Я слил свой исходный код с кодом коллеги и увидел, что он добавил исключение, которое будет добавлено в объявление метода; однако я знал, что это исключение никогда не будет на самом деле выброшено из этого метода.
Я удивляюсь, почему компилятор не предупредил меня о "объявленном не сгенерированном исключении" (или о чем-то подобном). Я понимаю, что вы можете объявить метод, генерирующий N исключений, даже если ни одно из этих исключений не было сгенерировано кодом в методе.
Это почему?
public void foo() throws IOException, IntrospectionException, BadStringOperationException, ... {
//do nothing
}
1 ответ
- Подклассы, которые переопределяют метод, могут вызвать исключение, даже если его суперкласс не делает.
- Позже вы можете изменить метод, чтобы выбрасывать одно из перечисленных исключений при сохранении обратной совместимости.