/
Вопросы и ответы
/
Java
/

Lang illegalargumentexception как исправить java

Lang illegalargumentexception как исправить java

5 лет назад

Человек-Молекула

Ответы

1

IllegalArgumentException - это исключение, которое генерируется при передаче некорректных аргументов методу. Для исправления этой ошибки необходимо определить, какой метод вызывает исключение, и проанализировать передаваемые ему аргументы. Проверьте, что передаваемые значения соответствуют ожидаемым типам данных и допустимым диапазонам значений.


Например, если исключение IllegalArgumentException возникает при вызове метода Integer.parseInt(), проверьте, что передаваемая строка содержит только допустимые символы для целого числа, а также что значение входит в допустимый диапазон значений для типа int

Вот пример кода, который может вызвать IllegalArgumentException при передаче неверного аргумента:

1
2
// вызов метода Integer.parseInt() с некорректной строкой
int value = Integer.parseInt("abc");

Чтобы избежать этой ошибки, убедитесь, что передаваемая строка содержит только цифры, а не буквы или другие символы:

1
2
String str = "123";
int value = Integer.parseInt(str);

Если вы не уверены, какой метод вызывает исключение IllegalArgumentException, обычно сообщение об ошибке содержит информацию о том, в какой строке кода возникло исключение и какой метод вызывался в этой строке. Используйте эту информацию для определения проблемы и ее решения.

4 года назад

Иван Полежаев

0

java.lang.IllegalArgumentException значит, что в метод передали недопустимый аргумент: число вне диапазона, строку не того формата, пустое значение. Чтобы исправить ошибку, найдите в стектрейсе строку из своего кода, посмотрите, какое значение туда пришло, и проверьте его до вызова.

Как читать стектрейс

1
2
3
Exception in thread "main" java.lang.IllegalArgumentException: bound must be positive
    at java.base/java.util.Random.nextInt(Random.java:...)
    at Main.main(Main.java:7)

Первая строка — тип ошибки и сообщение. Ниже — цепочка вызовов. Ищите первую строку с вашим классом: здесь это Main.java:7. В этой строке в метод ушёл неправильный аргумент.

Частые причины

КодПочему падаетКак исправить
new Random().nextInt(0)граница должна быть больше нуляпроверьте, что значение больше 0
Integer.parseInt("12a")NumberFormatException — наследник IllegalArgumentExceptionпроверьте строку или поймайте исключение
Thread.sleep(-1)отрицательная паузапередавайте 0 и больше
Enum.valueOf(Color.class, "red")нет константы с таким именем, регистр важенприведите строку к нужному регистру
new ArrayList<>(-5)отрицательная ёмкостьпроверьте размер

Проверка до вызова

1
2
3
4
5
6
7
String input = "12a";
try {
    int number = Integer.parseInt(input);
    System.out.println(number);
} catch (NumberFormatException e) {
    System.out.println("Это не число: " + input);
}

Бросать самому

В своих методах IllegalArgumentException бросают, когда аргумент не подходит. Так ошибка всплывает прямо в месте вызова:

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

Для null есть короткая проверка Objects.requireNonNull(value, "value не может быть null") — она бросает NullPointerException с понятным сообщением.

Исключения и их обработку разбирают в бесплатном курсе «Основы Java».

8 дней назад

Никита Вихров

+7 800 100 22 47

бесплатно по РФ

+7 495 085 21 62

бесплатно по Москве

108813 г. Москва, вн.тер.г. поселение Московский,
г. Московский, ул. Солнечная, д. 3А, стр. 1, помещ. 20Б/3
ОГРН 1217300010476
ИНН 7325174845