Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Справочник Java

IllegalArgumentException

Сообщает, что метод получил недопустимый аргумент.

Доступно с: Java 1.0

Синтаксис

public class IllegalArgumentException extends RuntimeException

Примеры

Проверка аргументов в начале метода:

double discount(double price, int percent) {
    if (percent < 0 || percent > 100) {
        throw new IllegalArgumentException("percent must be 0..100, got " + percent);
    }
    return price * (100 - percent) / 100;
}
 
void main() {
    IO.println(discount(200, 15));
    try {
        discount(200, 150);
    } catch (IllegalArgumentException e) {
        IO.println(e.getMessage());
    }
}

Результат:

170.0
percent must be 0..100, got 150

Проверка в компактном конструкторе записи:

record Age(int value) {
    Age {
        if (value < 0) throw new IllegalArgumentException("negative age: " + value);
    }
}
 
void main() {
    IO.println(new Age(30));
    try {
        new Age(-1);
    } catch (IllegalArgumentException e) {
        IO.println(e);
    }
}

Результат:

Age[value=30]
java.lang.IllegalArgumentException: negative age: -1

Примечания

Самое частое исключение для проверки входных данных: бросайте его сразу, как только аргумент оказался неправильным, с понятным сообщением. Для null-аргументов принято бросать NullPointerException через Objects.requireNonNull().

См. также

  • IllegalStateException — Сообщает, что метод вызван в неподходящий момент — объект не в том состоянии.
  • NumberFormatException — Возникает, когда строку нельзя превратить в число.
  • RuntimeException — Базовый класс непроверяемых исключений — ошибок в логике программы.

Вопросы и ответы по теме

В учебнике

  • Свои исключения — Как создать собственный класс исключения в Java — наследование от Exception и RuntimeException, сообщение, причина и дополнительные поля.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.