English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Ogni volta che passi un parametro inappropriato al metodo o al costruttore, viene sollevata un'IllegalStateException. E' un'eccezione di runtime, quindi non e' necessario gestirla durante la compilazione.
valueOf()
Il metodo della classe java.sql.Date accetta un formato di escape JDBCyyyy- [m] m- [d] dRappresenta una stringa di data e la trasforma in un oggetto 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("Inserisci la tua data di nascita nel formato di escape JDBC (yyyy-mm-dd)"); String dateString = sc.next(); Date date = Date.valueOf(dateString); System.out.println("Given date converted int to an object: "+date); } }
Risultato di output
Inserisci la tua data di nascita nel formato di escape JDBC (aaaa-mm-gg) 1989-09-26 Data convertita in un oggetto: 1989-09-26
Ma se passi una stringa date in qualsiasi altro formato, questo metodo solleva un'IllegalStateException.
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("Inserisci la tua data di nascita nel formato di escape JDBC (yyyy-mm-dd)"); String dateString = sc.next(); Date date = Date.valueOf(dateString); System.out.println("Given date converted int to an object: "+date); } }
Inserisci la tua data di nascita nel formato di escape JDBC (aaaa-mm-gg) 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) Nel seguente esempio Java, il costruttore Date (effettivamente deprecato) accetta
setPriority()
I metodi della classe Thread accettano un valore intero che rappresenta la priorità della thread e lo impostano come thread corrente. Tuttavia, il valore passato a questo metodo dovrebbe essere inferiore alla priorità massima della thread; altrimenti, questo metodo solleverà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)
Quando si utilizza un metodo che causa IllegalArgumentException, poiché si conoscono i parametri validi, è possibile utilizzare in anticipo una condizione if per limitare/verificare i parametri e evitare l'eccezione.
import java.util.Scanner; public class IllegalArgumentExample { public static void main(String args[]) { Thread thread = new Thread(); System.out.println("Inserisci il valore della priorità del thread: "); Scanner sc = new Scanner(System.in); int priority = sc.nextInt(); if(priority<=Thread.MAX_PRIORITY) { thread.setPriority(priority); } System.out.println("Il valore della priorità della priorità deve essere inferiore a: " + Thread.MAX_PRIORITY); } } }
Risultato di output
Inserisci il valore della priorità del thread: 15 Il valore della priorità della priorità deve essere inferiore a: 10