






Studia grazie alle numerose risorse presenti su Docsity
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Prepara i tuoi esami
Studia grazie alle numerose risorse presenti su Docsity
Prepara i tuoi esami con i documenti condivisi da studenti come te su Docsity
Trova i documenti specifici per gli esami della tua università
Preparati con lezioni e prove svolte basate sui programmi universitari!
Rispondi a reali domande d’esame e scopri la tua preparazione
Riassumi i tuoi documenti, fagli domande, convertili in quiz e mappe concettuali
Studia con prove svolte, tesine e consigli utili
Togliti ogni dubbio leggendo le risposte alle domande fatte da altri studenti come te
Esplora i documenti più scaricati per gli argomenti di studio più popolari
Ottieni i punti per scaricare
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Come gestire le eccezioni in java
Tipologia: Appunti
1 / 10
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!







Java offre strumenti potenti per gestire condizioni di errore ed eccezioni che possono verificarsi durante l'esecuzione di un programma. Vediamo il dettaglio di ogni parte.
1. Condizioni di errore Un errore può essere causato da: Errori di programmazione : problemi come divisione per zero, cast non permessi, accesso oltre i limiti di un array. Errori di sistema : situazioni come disco danneggiato, memoria non disponibile, o connessioni chiuse inaspettatamente. Errori di utilizzo : input errati o tentativi di accedere a file inesistenti. 2. Gerarchia delle eccezioni in Java Throwable è la superclasse di tutti gli errori ed eccezioni. o Error : rappresenta problemi gravi (es. OutOfMemoryError), che non dovrebbero essere gestiti dal programma. o Exception : rappresenta errori più comuni, gestibili tramite codice. Le eccezioni discendono dalla classe Exception e sono classificate in: Eccezioni controllate : Devono essere gestite esplicitamente. Eccezioni non controllate : Derivano da RuntimeException e non è obbligatorio gestirle. 3. Classe Throwable Questa classe definisce tutto ciò che può essere "lanciato". Ha due sottoclassi principali: Error : usata per problemi critici del sistema. Exception : usata per situazioni recuperabili.
Classe Error Esempi di errori critici: OutOfMemoryError : esaurimento della memoria. AssertionError : violazione di asserzioni. Classe Exception Le eccezioni rappresentano errori recuperabili, come: Input non valido. File inesistenti. Problemi di rete.
4. Eccezioni controllate e non controllate Eccezioni non controllate : non è obbligatorio gestirle. Derivano da RuntimeException (es. NullPointerException, IndexOutOfBoundsException). Eccezioni controllate : devono essere gestite (es. IOException, FileNotFoundException). 5. Creare una nuova eccezione Se le eccezioni predefinite non sono adatte, è possibile creare una nuova classe estendendo: RuntimeException per eccezioni non controllate. Exception per eccezioni controllate. Esempio: public class DivisionePerZeroException extends RuntimeException { public DivisionePerZeroException() { super("Divisione per zero!"); } public DivisionePerZeroException(String msg) { super(msg); } }
Scanner in = new Scanner(System.in); System.out.print("Inserisci il numeratore: "); int n = in.nextInt(); System.out.print("Inserisci il denominatore: "); int d = in.nextInt(); try { Divisione div = new Divisione(n, d); double res = div.dividi(); System.out.println("Risultato: " + res); } catch (DivisionePerZeroException e) { System.out.println(e.getMessage()); } } }
8. Segnalare eccezioni controllate Se un metodo può lanciare un'eccezione controllata, bisogna: 1. Gestirla con try-catch. 2. Dichiarare che il metodo può lanciarla usando throws. Esempio: public void calcola() throws IOException { // Metodo che può lanciare IOException } 9. Esempio avanzato: Lettura di un file import java.io.*; import java.util.Scanner; public class TestTry {
public static void main(String[] args) throws IOException { Scanner in = new Scanner(System.in); boolean ok = false; String fileName; System.out.println("Nome del file?"); while (!ok) { try { fileName = in.next(); FileReader fr = new FileReader(fileName); BufferedReader br = new BufferedReader(fr); ok = true; String line; while ((line = br.readLine()) != null) { System.out.println(line); } br.close(); } catch (FileNotFoundException e) { System.out.println("File inesistente, nome?"); } } } }
10. Conclusioni La gestione delle eccezioni in Java permette di creare programmi robusti. Con try-catch e throw, possiamo prevenire errori critici, gestire input invalidi e assicurare che il programma si comporti correttamente anche in situazioni impreviste. La Clausola finally Introduzione alla clausola finally
try { Scanner in = new Scanner(reader); readData(in); // Metodo che legge i dati dal file } finally { reader.close(); // Chiusura garantita del file } Spiegazione :
public double[] readFile(String filename) throws IOException, BadDataException { FileReader reader = new FileReader(filename); try { Scanner in = new Scanner(reader); readData(in); } finally { reader.close(); } return data; } Dettagli importanti :
Quando viene lanciata un'eccezione, l'esecuzione normale si interrompe. Se il blocco try contiene delle clausole catch, il gestore cerca un blocco catch compatibile. Ordine di esecuzione :