Первый тоже получит мой голос.
Я не уверен, является ли это примером здесь или нет, но я не думаю, что установка возраста вне диапазона была бы ошибкой программирования. Бросок IllegalArgumentException имеет больше смысла, когда произошла программная ошибка. Нулевой или отрицательный возраст могут сделать мой список условий для исключения.
Исходя из названия поста, было бы неплохо подумать, следует ли сделать то же самое для верхнего предела. Я бы сказал, что (используя пример возраста), в зависимости от того, что задает возраст, верхний предел может быть лучше применен валидатором объекта. Проверка должна быть применена в некоторый момент, когда обратная связь с пользователем объекта может быть получена для реакции (например, перед сохранением), поскольку это не обязательно будет ошибка программирования, но ситуация, о которой пользователь должен сначала обратиться или получить уведомление.