Eccezioni Java - Prova... Cattura
Eccezioni Java
Durante l'esecuzione del codice Java possono verificarsi diversi errori: errori di codifica commessi dal programmatore, errori dovuti a input errati o altre cose imprevedibili.
Quando si verifica un errore, Java normalmente si arresta e genera un messaggio di errore. Il termine tecnico per questo è: Java genererà un'eccezione (genera un errore).
Java prova a catturare
L' try
istruzione consente di definire un blocco di codice da testare per verificare la presenza di errori durante l'esecuzione.
L' catch
istruzione consente di definire un blocco di codice da eseguire, se si verifica un errore nel blocco try.
Le parole chiave try
e catch
sono in coppia:
Sintassi
try {
// Block of code to try
}
catch(Exception e) {
// Block of code to handle errors
}
Considera il seguente esempio:
Questo genererà un errore, perché myNumbers[10] non esiste.
public class Main {
public static void main(String[ ] args) {
int[] myNumbers = {1, 2, 3};
System.out.println(myNumbers[10]); // error!
}
}
L'output sarà qualcosa del genere:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
at Main.main(Main.java:4)
Se si verifica un errore, possiamo utilizzare try...catch
per catturare l'errore ed eseguire del codice per gestirlo:
Esempio
public class Main {
public static void main(String[ ] args) {
try {
int[] myNumbers = {1, 2, 3};
System.out.println(myNumbers[10]);
} catch (Exception e) {
System.out.println("Something went wrong.");
}
}
}
L'output sarà:
Something went wrong.
Infine
L' finally
istruzione ti consente di eseguire il codice, dopo try...catch
, indipendentemente dal risultato:
Esempio
public class Main {
public static void main(String[] args) {
try {
int[] myNumbers = {1, 2, 3};
System.out.println(myNumbers[10]);
} catch (Exception e) {
System.out.println("Something went wrong.");
} finally {
System.out.println("The 'try catch' is finished.");
}
}
}
L'output sarà:
Something went wrong.
The 'try catch' is finished.
La parola chiave lancio
L' throw
istruzione consente di creare un errore personalizzato.
L' throw
istruzione viene utilizzata insieme a un tipo di eccezione . Ci sono molti tipi di eccezioni disponibili in Java: ArithmeticException
,
FileNotFoundException
, ArrayIndexOutOfBoundsException
, SecurityException
, ecc:
Esempio
Genera un'eccezione se l' età è inferiore a 18 (stampa "Accesso negato"). Se l'età ha 18 anni, stampa "Accesso concesso":
public class Main {
static void checkAge(int age) {
if (age < 18) {
throw new ArithmeticException("Access denied - You must be at least 18 years old.");
}
else {
System.out.println("Access granted - You are old enough!");
}
}
public static void main(String[] args) {
checkAge(15); // Set age to 15 (which is below 18...)
}
}
L'output sarà:
Exception in thread "main" java.lang.ArithmeticException: Access denied - You must be at least 18 years old.
at Main.checkAge(Main.java:4)
at Main.main(Main.java:12)
Se l' età avesse 20 anni, non avresti un'eccezione:
Esempio
checkAge(20);
L'output sarà:
Access granted - You are old enough!