Я думаю, что это не ситуация для предупреждения компилятора, потому что «чрезмерно широкое» исключение не обязательно является проблемой: если метод не является окончательным или закрытым, он определяет, какое исключение может генерировать любая реализация подкласса.В этом случае широкая область может быть преднамеренной.
Ваш вопрос одинаково хорошо подходит для Java до 7:
public void foo(String bar) throws Exception {
// Code that may throw both FirstException and SecondException
}
Здесь throws Exception
также может считаться плохой практикой(но предупреждений об этом нет).
В этой же строке аргумента обратите внимание, что вы получите ошибку при компиляции при попытке перехватить (проверенное) исключение, которое не может быть выдано, но вы можете добавить к throws
предложение сигнатуры метода всех видов исключений, которые не используются в теле реализации.
Хотя бы полезен такой инструмент, как FindBugs.
Обновление: "Если метод не являетсяfinal или private ": я должен согласиться с тем, что для приватных или финальных методов (и, возможно, статических тоже) может быть предупреждение.
Обновление 2. Даже для финальных методов вы можете оставить свои параметрыоткрыт, чтобы выдавать больше исключений в будущем, не нарушая интерфейс.