Java base V: La gestione delle Eccezioni. Argomenti Le eccezioni Ignorare le eccezioni Gestire le...
-
Upload
crocetta-ranieri -
Category
Documents
-
view
214 -
download
0
Transcript of Java base V: La gestione delle Eccezioni. Argomenti Le eccezioni Ignorare le eccezioni Gestire le...
Java base V:Java base V:La gestione delle EccezioniLa gestione delle Eccezioni
Argomenti
• Le eccezioni
• Ignorare le eccezioni
• Gestire le eccezioni
• Rilanciare le eccezioni
• Gerarchia delle eccezioni
• Le eccezioni personalizzate
Obiettivi
• Conoscere e capire la gestione delle eccezioni e degli errori in Java
• Creare una tipologia di eccezioni personalizzata
La gestione degli erroriLa gestione degli erroriI nostri applicativi sono pieni di istruzioni “critiche”, che in certi
casi possono produrre errori
L’approccio classico consiste nell’inserire controlli (if… else..) per cercare di intercettare a priori le situazioni critiche
insoddisfacente
non è facile prevedere tutte le situazioni che potrebbero
produrre l’errore
Java introduce il concetto di Java introduce il concetto di eccezioneeccezione
Cosa sono le eccezioniCosa sono le eccezioniUn’eccezione è un segnale indicante il verificarsi di
un’errore o di una condizione anomala nell’esecuzione del programma
Situazioni tipiche in cui si verifica un’eccezione
Implementazione incorrettaImplementazione incorretta
Errori logiciErrori logici
Un oggetto può trovarsi in Un oggetto può trovarsi in uno stato inconsistente o uno stato inconsistente o
inappropriatoinappropriato
Alcune situazioni anomale possono essere causate dall'ambiente Alcune situazioni anomale possono essere causate dall'ambiente "esterno" al programma"esterno" al programma
Causati dal ProgrammatoreCausati dal Programmatore
VsVs
Hard Disk pienoInterruzione di rete
Mancanza di permessi per una risorsa
Le eccezioni in JavaJava ha un insieme predefinito di eccezioni ed errori che possono accadere
durante l’esecuzione di un programma
Il meccanismo delle eccezioni fornito da Java è un modo flessibile Il meccanismo delle eccezioni fornito da Java è un modo flessibile per realizzare una corretta gestione delle situazioni di erroreper realizzare una corretta gestione delle situazioni di errore
Permette di passare il controllo dal punto in cui si verifica l’errore direttamente a un altro punto dove l’errore può essere gestito e uno stato
corretto dell’applicazione ripristinato
BLOCCO A
LANCIA ECCEZIONELANCIA ECCEZIONE BLOCCO B
GESTISCE E.GESTISCE E.
RILANCIA E.RILANCIA E.
Approcci alle eccezioniApprocci alle eccezioni
La scelta del modo di gestire gli eventi anomali o eccezionali è un’importante caratteristica del disegno del programma
3 modi di gestire l’eccezioni3 modi di gestire l’eccezioni
Ignorarle
Gestirle quando avvengono
Rilanciarle eGestirle altrove nel programma
Ignorare le EccezioniIgnorare le Eccezioni
Se un’eccezione è ignorata da un programma, questo Se un’eccezione è ignorata da un programma, questo termineràterminerà producendo un producendo un messaggio opportunomessaggio opportuno
traccia dello stack delle chiamate dei metodicon l’indicazione
dell’errore
della linea in cui l’eccezione si è verificata
dellle chiamate di metodi che hanno
portato all’eccezione
Esempio: Divisione per zero
EVITARE!!!!!EVITARE!!!!!
Gestire le EccezioniGestire le Eccezioni
Occorre processare l’eccezione quando accadeOccorre processare l’eccezione quando accade
La linea di codice che lancia l’eccezione deve essere eseguita in un blocco try/catch
try {
/* operazione critica che può sollevare eccezioni */
}
catch (Exception e) {
/* EXCEPTION HANDLER */
}
finally{
/* blocco da eseguire sempre */
}
1 o più blocchi
catchOgni catch associata ad un tipo
d’eccezione
La computazione prosegue fino alla prima clausola catch che corrisponde al tipo d’eccezione sollevata
Opzionale, indica il codice da
esguire anche in caso di errore
Rilanciare le EccezioniRilanciare le EccezioniSe l’eccezione non viene intercettata e gestita dove si verifica, può ancora
essere trattata a un livello più altotrattata a un livello più alto
RILANCIATA ESPLICITAMENTERILANCIATA ESPLICITAMENTE ALL’ESTERNO DEL METODO
Finchè non viene intercettata e gestita da un metodo
PROPAGAZIONEPROPAGAZIONE
deve indicare quale eccezione può uscire da
esso
public int readInteger(String s)throws NumberFormatException {
return Integer.parseInt(s);
} Solleva
eccezione
Rilancia
l’eccezione
Rilanciare le Eccezioni (2)Rilanciare le Eccezioni (2)
A volte è utile rilanciare programmaticamente un particolare tipo dieccezione
SI UTILIZZA L’ISTRUZIONE
THROWTHROW
Solitamente un’istruzione throw è inclusa in un’istruzione if che valuta una condizione per verificare se deve essere
sollevata l’eccezione
il metodo termina immediatamente (come se si eseguisse un return)
Il controllo non torna di default al metodo chiamante
Il controllo viene passato al gestore
Tipi di Eccezione in JavaTipi di Eccezione in Java2 CATEGORIE
CONTROLLATECONTROLLATE NON CONTROLLATENON CONTROLLATE
il compilatore pretende che ogni metodo specifichi cosa fare se una
eccezione di questo tipo viene lanciata da un comando al suo
interno
il compilatore non richiede che si specifichi cosa fare se
l’eccezione viene lanciata
IOException
RuntimeException
Gerarchia di EccezioniGerarchia di Eccezioni
Throwable
Error Exception
RuntimeException
CloneNotSupportedException
ClassNotFound
Exception
IOException
Controllate
Non gestibili e dovuti
a fatti esterniEstendiamo
queste
Le eccezioni personalizzateLe eccezioni personalizzate
Permettono di fornire al chiamante Permettono di fornire al chiamante informazioni diagnostiche aggiuntiveinformazioni diagnostiche aggiuntive
Permettono di implementare una Permettono di implementare una logica degli errori relativa al logica degli errori relativa al proprio dominio applicativoproprio dominio applicativo
DEVONO ESTENDERE LA CLASSE EXCEPTION EXCEPTION O DERIVATE
public class MiaExeption extends Exception {public MiaException(String message) {
super(message);}
}
DEVONO IMPLEMENTARE COSTRUTTORECOSTRUTTORE CON MESSAGGIO
throw new MiaExeption(“MESSAGGIO ERRORE”);
Per rilanciare l’eccezione personalizzata