Какое исключение в Java указывает на передачу недопустимого или некорректного аргумента в метод?

«Какое исключение в Java указывает на передачу недопустимого или некорректного аргумента в метод?» — вопрос из категории Java Core, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Для сигнализации о недопустимом аргументе используется IllegalArgumentException.

Назначение: Это unchecked-исключение (RuntimeException), которое следует выбрасывать, когда метод получает аргумент, значение которого выходит за допустимые пределы или противоречит логике метода.

Типичные сценарии использования:

  • Передача null, когда метод этого не допускает.
  • Передача отрицательного числа, где ожидается положительное.
  • Передача индекса за пределами допустимого диапазона (хотя для коллекций чаще используется IndexOutOfBoundsException, который является подклассом IllegalArgumentException).

Пример реализации с проверкой:

public void setAge(int age) {
    if (age < 0 || age > 150) {
        throw new IllegalArgumentException("Возраст должен быть в диапазоне от 0 до 150. Получено: " + age);
    }
    this.age = age;
}

Почему это важно?

  • Раннее обнаружение ошибок: Проблема выявляется сразу при вызове метода, а не позже в процессе работы.
  • Ясность контракта: Четко документирует, какие значения аргументов являются допустимыми.
  • Best Practice: Следует всегда выполнять валидацию входящих параметров в публичных методах API.