В JLS нет ничего, что мешает вам указывать один и тот же тип исключения (или даже подтипы) в предложении throws
. Единственное ограничение, в соответствии с JLS, Section 8.4.6, является:
Это ошибка во время компиляции, если ExceptionType упоминается в пункте throws
не является подтипом (§4.10) из Throwable
.
Таким образом, это составляет:
throws RedundantException, RedundantException, RedundantException
Мой IDE предупреждает меня о "Дубликат бросков", но это не ошибка компилятора.
Я не вижу веских оснований для этого. Мне никогда не приходило в голову, что я пытаюсь это сделать.
компилируется, даже если MySubclassException
подклассы MyException
:
throws MyException, MySubclassException, MyException, MySubclassException
Единственная причина, я могу думать, чтобы перечислить подклассов типы исключений в пункте throws
является документом в собственном Javadocs, что подкласс может быть выброшен, поэтому его можно обрабатывать отдельно.
@throws MyException If something general went wrong.
@throws MySubclassException If something specific went wrong.
Несмотря на это, моя IDE предупреждает меня о «более общем исключении» в списке.
Кстати, не имеет значения, проверен ли какой-либо из типов исключений в приведенных выше примерах.
Как вы думаете, что означает «броски»? –
Синтаксис иногда позволяет много нелогичных вещей, вопрос в том, почему вы пишете такое? – m0skit0
Вы можете исключить только одно исключение из метода, потому что это делает передачу управления от метода. то есть больше кода из метода не выполняется, когда генерируется исключение. – DennisW