Lezioni del modulo (1/2)
I blocchi try-catch
In Java, gli errori che si verificano durante l'esecuzione di un programma vengono gestiti tramite le Eccezioni. La gestione delle eccezioni permette di intercettare le situazioni anomale ed evitare che il programma termini bruscamente.
La struttura try-catch
Per gestire una potenziale eccezione, racchiudiamo il codice rischioso all'interno di un blocco try. Se si verifica un errore all'interno del try, la JVM interrompe l'esecuzione del blocco e cerca un blocco catch corrispondente per gestire l'eccezione.
try {
int result = 10 / 0; // Genera un'eccezione ArithmeticException
System.out.println("Questo non verrà stampato");
} catch (ArithmeticException e) {
System.out.println("Si è verificato un errore aritmetico: " + e.getMessage());
}
Il blocco finally
Il blocco finally è opzionale e viene sempre eseguito, indipendentemente dal fatto che sia stata lanciata o meno un'eccezione. È ideale per rilasciare risorse o eseguire operazioni di pulizia.
try {
System.out.println("Esecuzione logica");
} catch (Exception e) {
System.out.println("Errore");
} finally {
System.out.println("Questo blocco viene sempre eseguito");
}
Lanciare Eccezioni: throw
Possiamo lanciare intenzionalmente un'eccezione usando la parola chiave throw, seguita da una nuova istanza di una classe di eccezione.
public static void checkScore(int score) {
if (score < 0 || score > 100) {
throw new IllegalArgumentException("Il punteggio deve essere compreso tra 0 e 100");
}
}
Prova tu
Completa il codice inserendo un blocco try-catch per gestire una possibile ArithmeticException derivante dalla divisione a / b. In caso di errore, stampa 'Error: division by zero'.
Mostra suggerimento
Inserisci l'operazione di divisione all'interno del blocco `try` e cattura `ArithmeticException` stampando il messaggio richiesto.
Soluzione disponibile dopo 3 tentativi
Completa il codice implementando un blocco try-catch-finally. Nel blocco try tenta di convertire la stringa str in un intero usando Integer.parseInt. Nel catch cattura NumberFormatException e stampa 'Invalid number'. Nel blocco finally stampa 'Finally'.
Mostra suggerimento
Scrivi la struttura `try { ... } catch (NumberFormatException e) { ... } finally { ... }`.
Soluzione disponibile dopo 3 tentativi
Completa il metodo checkAge lanciando un'eccezione IllegalArgumentException con messaggio 'Underage' se l'età fornita è minore di 18 anni.
Mostra suggerimento
Usa `if (age < 18)` e la parola chiave `throw new` per istanziare e lanciare l'eccezione.
Soluzione disponibile dopo 3 tentativi