English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
IllegalArgumentException возникает каждый раз, когда вы передаете неподходящий параметр методу или конструктору. Это исключение времени выполнения, поэтому его не нужно обрабатывать в компиляции.
valueOf()
Методы класса java.sql.Date принимают строку в формате JDBC escapeyyyy- [m] m- [d] dСтрока, представляющая дату, и ее преобразование в объект java.sql.Date.
import java.sql.Date; import java.util.Scanner; public class IllegalArgumentExample { public static void main(String args[]) { Scanner sc = new Scanner(System.in); System.out.println("Ввелите дату рождения в формате JDBC escape (yyyy-mm-dd)"); String dateString = sc.next(); Date date = Date.valueOf(dateString); System.out.println("Given date converted int to an object: " + date); } }
Output result
Введите дату рождения в формате JDBC escape (yyyy-mm-dd) 1989-09-26 Дата, преобразованная в объект: 1989-09-26
Но если вы передадите строку date в любом другом формате, этот метод вызовет IllegalArgumentException.
import java.sql.Date; import java.util.Scanner; public class IllegalArgumentExample { public static void main(String args[]) { Scanner sc = new Scanner(System.in); System.out.println("Ввелите дату рождения в формате JDBC escape (yyyy-mm-dd)"); String dateString = sc.next(); Date date = Date.valueOf(dateString); System.out.println("Given date converted int to an object: " + date); } }
Введите дату рождения в формате JDBC escape (yyyy-mm-dd) 26-07-1989 Exception in thread "main" java.lang.IllegalArgumentException at java.sql.Date.valueOf(Unknown Source) at july_ipoindi.NextElementExample.main(NextElementExample.java:11) В следующем примере Java конструктор Date (фактически устаревший) принимает
setPriority()
Методы класса Thread принимает целое значение, представляющее приоритет потока, и устанавливает его для текущего потока. Однако значение, передаваемое этому методу, должно быть меньше максимального приоритета потока, в противном случае этот метод выбрасываетIllegalArgumentException.
public class IllegalArgumentExample { public static void main(String args[]) { Thread thread = new Thread(); System.out.println(thread.MAX_PRIORITY); thread.setPriority(12); } }
10Exception in thread "main" java.lang.IllegalArgumentException at java.lang.Thread.setPriority(Unknown Source) at july_ipoindi.NextElementExample.main(NextElementExample.java:6)
При использовании методов, вызывающих IllegalArgumentException, поскольку вы знаете их законные параметры, вы можете заранее использовать if-условие для ограничения/проверки параметров и избежать исключений.
import java.util.Scanner; public class IllegalArgumentExample { public static void main(String args[]) { Thread thread = new Thread(); System.out.println("Enter the thread priority value:"); Scanner sc = new Scanner(System.in); int priority = sc.nextInt(); if(priority<=Thread.MAX_PRIORITY) { thread.setPriority(priority); } System.out.println("Priority value should be less than: " + Thread.MAX_PRIORITY); } } }
Output result
Enter the thread priority value: 15 Worth priority should be less than: 10