JAVA 10/10/2024
Le eccezioni in Java sono un meccanismo che permette di gestire situazioni anomale o errori che si
verificano durante l'esecuzione di un programma. Le eccezioni aiutano a separare la logica del
programma dal codice di gestione degli errori.
Alcuni esempi di oggetti in java:
Java.lang.ArrayIndexOutOfBoundsException -> accedere fuori dall’array
Java.lang.ClassCastException
Le eccezioni in Java sono sottoclassi di Throwable, e ne esistono 3 tipi:
Error: Rappresenta errori gravi che di solito il programma non può gestire, come problemi
di memoria (OutOfMemoryError). Non è comune gestire esplicitamente questi errori.
RuntimeException: Sono solitamente causate da errori di programmazione, come
divisione per zero o accesso a un array fuori dai limiti. Queste eccezioni derivano dalla
classe RuntimeException e non è obbligatorio gestirle esplicitamente. Esempi sono
NullPointerException, ArrayIndexOutOfBoundsException.
Exception: Devono essere dichiarate o gestite esplicitamente nel codice. Se non vengono
catturate o dichiarate, il compilatore genererà un errore. Esempi sono IOException,
SQLException.
Dichiarazione e gestione delle eccezioni:
1. Dichiarazione delle eccezioni: Le checked exceptions devono essere dichiarate nel metodo tramite
la parola chiave throws. Ad esempio:
public void readFile (String fileName) throws IOException {
// Codice che potrebbe generare un IOException
}
2. Gestione delle eccezioni: Per gestire le eccezioni, si usa il costrutto try-catch-finally:
try: Contiene il codice che potrebbe generare un'eccezione.
catch: Cattura l'eccezione e definisce cosa fare quando si verifica.
finally: Blocco opzionale che viene eseguito indipendentemente dal fatto che un'eccezione
sia stata lanciata o meno.
Esempio:
try {
int result = 10 / 0;
}
catch (ArithmeticException e) {
System.out.println("Errore: Divisione per zero");
}
finally {
System.out.println("Blocco finally eseguito");
}
3. Lanciare eccezioni: Puoi lanciare un'eccezione manualmente usando la parola chiave throw,
if (fileName == null) {
throw new IllegalArgumentException("Il nome del file non può essere nullo");
}