Java base V: La gestione delle Eccezioni. Argomenti Le eccezioni Ignorare le eccezioni Gestire le...

14
Java base V: Java base V: La gestione delle La gestione delle Eccezioni Eccezioni

Transcript of Java base V: La gestione delle Eccezioni. Argomenti Le eccezioni Ignorare le eccezioni Gestire le...

Page 1: Java base V: La gestione delle Eccezioni. Argomenti Le eccezioni Ignorare le eccezioni Gestire le eccezioni Rilanciare le eccezioni Gerarchia delle eccezioni.

Java base V:Java base V:La gestione delle EccezioniLa gestione delle Eccezioni

Page 2: Java base V: La gestione delle Eccezioni. Argomenti Le eccezioni Ignorare le eccezioni Gestire le eccezioni Rilanciare le eccezioni Gerarchia delle eccezioni.

Argomenti

• Le eccezioni

• Ignorare le eccezioni

• Gestire le eccezioni

• Rilanciare le eccezioni

• Gerarchia delle eccezioni

• Le eccezioni personalizzate

Page 3: Java base V: La gestione delle Eccezioni. Argomenti Le eccezioni Ignorare le eccezioni Gestire le eccezioni Rilanciare le eccezioni Gerarchia delle eccezioni.

Obiettivi

• Conoscere e capire la gestione delle eccezioni e degli errori in Java

• Creare una tipologia di eccezioni personalizzata

Page 4: Java base V: La gestione delle Eccezioni. Argomenti Le eccezioni Ignorare le eccezioni Gestire le eccezioni Rilanciare le eccezioni Gerarchia delle eccezioni.

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

Page 5: Java base V: La gestione delle Eccezioni. Argomenti Le eccezioni Ignorare le eccezioni Gestire le eccezioni Rilanciare le eccezioni Gerarchia delle eccezioni.

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

Page 6: Java base V: La gestione delle Eccezioni. Argomenti Le eccezioni Ignorare le eccezioni Gestire le eccezioni Rilanciare le eccezioni Gerarchia delle eccezioni.

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.

Page 7: Java base V: La gestione delle Eccezioni. Argomenti Le eccezioni Ignorare le eccezioni Gestire le eccezioni Rilanciare le eccezioni Gerarchia delle eccezioni.

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

Page 8: Java base V: La gestione delle Eccezioni. Argomenti Le eccezioni Ignorare le eccezioni Gestire le eccezioni Rilanciare le eccezioni Gerarchia delle eccezioni.

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!!!!!

Page 9: Java base V: La gestione delle Eccezioni. Argomenti Le eccezioni Ignorare le eccezioni Gestire le eccezioni Rilanciare le eccezioni Gerarchia delle eccezioni.

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

Page 10: Java base V: La gestione delle Eccezioni. Argomenti Le eccezioni Ignorare le eccezioni Gestire le eccezioni Rilanciare le eccezioni Gerarchia delle eccezioni.

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

Page 11: Java base V: La gestione delle Eccezioni. Argomenti Le eccezioni Ignorare le eccezioni Gestire le eccezioni Rilanciare le eccezioni Gerarchia delle eccezioni.

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

Page 12: Java base V: La gestione delle Eccezioni. Argomenti Le eccezioni Ignorare le eccezioni Gestire le eccezioni Rilanciare le eccezioni Gerarchia delle eccezioni.

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

Page 13: Java base V: La gestione delle Eccezioni. Argomenti Le eccezioni Ignorare le eccezioni Gestire le eccezioni Rilanciare le eccezioni Gerarchia delle eccezioni.

Gerarchia di EccezioniGerarchia di Eccezioni

Throwable

Error Exception

RuntimeException

CloneNotSupportedException

ClassNotFound

Exception

IOException

Controllate

Non gestibili e dovuti

a fatti esterniEstendiamo

queste

Page 14: Java base V: La gestione delle Eccezioni. Argomenti Le eccezioni Ignorare le eccezioni Gestire le eccezioni Rilanciare le eccezioni Gerarchia delle eccezioni.

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