Ответ
Да, можно, но это не имеет практического смысла.
- Unchecked-исключения (наследники
RuntimeExceptionиError) не обязательны для объявления вthrows. - Компилятор не проверяет, обрабатывает ли вызывающий код такие исключения.
Пример (синтаксически корректно, но избыточно):
public void processData() throws NullPointerException, IllegalArgumentException {
// Метод может выбросить эти RuntimeException
throw new IllegalArgumentException("Invalid argument");
}
Почему этого следует избегать:
- Загромождает сигнатуру метода без добавления полезной информации для компилятора или разработчика.
- Не соответствует конвенции:
throwsпредназначен для объявления checked-исключений, которые являются частью контракта метода и требуют обязательной обработки. - Может вводить в заблуждение, создавая впечатление, что исключение требует специальной обработки, хотя это не так.