Класс IllegalArgumentException
Класс IllegalArgumentException наследуется от класса
RuntimeException и относится к непроверяемым исключениям.
Он сигнализирует о том, что в метод был передан аргумент,
не соответствующий ожидаемому формату или диапазону.
В первом параметре конструктора мы передаем сообщение об ошибке,
во втором - причину возникновения исключения.
Чаще всего это исключение выбрасывается разработчиками
вручную с помощью ключевого слова throw, когда нужно
сообщить о некорректном значении параметра. Также его могут
выбрасывать некоторые методы стандартной библиотеки Java,
например Integer.parseInt при неверной строке.
Синтаксис
throw new IllegalArgumentException();
throw new IllegalArgumentException("сообщение");
throw new IllegalArgumentException("сообщение", cause);
Пример
Давайте выбросим исключение вручную, если переданный возраст оказался отрицательным:
public class Main
{
public static void checkAge(int age)
{
if (age < 0) {
throw new IllegalArgumentException("Age cannot be negative");
}
System.out.println("Age: " + age);
}
public static void main(String[] args)
{
checkAge(-5);
}
}
Результат выполнения кода:
Exception in thread "main" java.lang.IllegalArgumentException: Age cannot be negative
Пример
Давайте перехватим исключение с помощью блока
try-catch и выведем сообщение об ошибке:
public class Main
{
public static void main(String[] args)
{
try {
throw new IllegalArgumentException("Invalid value");
} catch (IllegalArgumentException e) {
System.out.println(e.getMessage());
}
}
}
Результат выполнения кода:
"Invalid value"
Пример
Давайте передадим причину возникновения исключения во втором параметре конструктора:
public class Main
{
public static void main(String[] args)
{
try {
try {
int num = Integer.parseInt("abc");
} catch (NumberFormatException cause) {
throw new IllegalArgumentException("Bad number", cause);
}
} catch (IllegalArgumentException e) {
System.out.println(e.getMessage());
System.out.println(e.getCause());
}
}
}
Результат выполнения кода:
"Bad number"
"java.lang.NumberFormatException: For input string: \"abc\""
Смотрите также
-
класс
RuntimeException,
родительский класс непроверяемых исключений -
ключевое слово
throw,
которое выбрасывает исключение -
конструкция
try,
которая обрабатывает исключения -
метод
getMessage,
который возвращает сообщение об ошибке