14
Informatica 2 Lezione 7 Corso di laurea in matematica Informatica 2 Dott. Ing. Leonardo Vito Corso di laurea matematica indirizzo matematica per le applicazioni gestionali ed economiche indirizzo matematica per le applicazioni tecnologiche e dell’ingegneria Corso di laurea specialistica in matematica e applicazioni indirizzo matematica Universita di Camerino

Informatica 2 Lezione 7 Corso di laurea in matematica Informatica 2 Dott. Ing. Leonardo Vito Corso di laurea matematica indirizzo matematica per le applicazioni

Embed Size (px)

Citation preview

Page 1: Informatica 2 Lezione 7 Corso di laurea in matematica Informatica 2 Dott. Ing. Leonardo Vito Corso di laurea matematica indirizzo matematica per le applicazioni

Informatica 2 Lezione 7

Corso di laurea in matematicaInformatica 2

Dott. Ing. Leonardo VitoCorso di laurea matematica

indirizzo matematica per le applicazioni gestionali ed economicheindirizzo matematica per le applicazioni tecnologiche e dell’ingegneria

Corso di laurea specialistica in matematica e applicazioni indirizzo matematica

Universita di Camerino

Page 2: Informatica 2 Lezione 7 Corso di laurea in matematica Informatica 2 Dott. Ing. Leonardo Vito Corso di laurea matematica indirizzo matematica per le applicazioni

Informatica 2 Lezione 7

Page 3: Informatica 2 Lezione 7 Corso di laurea in matematica Informatica 2 Dott. Ing. Leonardo Vito Corso di laurea matematica indirizzo matematica per le applicazioni

Informatica 2 Lezione 7

1

Eccezioni

• L’istruzione try/catch• La propagazione dell’eccezioni

• Intercettare e gestire eccezioni

Page 4: Informatica 2 Lezione 7 Corso di laurea in matematica Informatica 2 Dott. Ing. Leonardo Vito Corso di laurea matematica indirizzo matematica per le applicazioni

Informatica 2 Lezione 7

1

Eccezioni in breve

• Un’eccezione è un oggetto che descrive una situazione anomala o di errore

• L’eccezioni vengono lanciate da una parte di un programma e possono essere raccolte e gestite da altre parti del programma

• Un programma può perciò essere suddiviso nel normale flusso d’esecuzione e in quello eccezionale

• Anche un errore è rappresentato come un oggetto Java, ma solitamente rappresenta una situazione non recuperabile e da non gestire

Page 5: Informatica 2 Lezione 7 Corso di laurea in matematica Informatica 2 Dott. Ing. Leonardo Vito Corso di laurea matematica indirizzo matematica per le applicazioni

Informatica 2 Lezione 7

1

Gestire l’eccezioni

• Ci sono 3 modi per gestire l’eccezioni:

– Ignorarle

– Gestirle quando avvengono

– Gestirle altrove nel programma

• La scelta del modo di gestire gli eventi anomali o eccezionali è un’importante caratteristica del disegno del programma

Page 6: Informatica 2 Lezione 7 Corso di laurea in matematica Informatica 2 Dott. Ing. Leonardo Vito Corso di laurea matematica indirizzo matematica per le applicazioni

Informatica 2 Lezione 7

1

Ignorare l’eccezioni

• Se un’eccezione è ignorata da un programma, questo terminerà producendo un messaggio opportuno

• Il messaggio mostra la traccia dello stack delle chiamate dei metodi con l’indicazione:

– dell’errore

– della linea in cui l’eccezione si è verificata

– dellle chiamate di metodi che hanno portato all’eccezione• Zero.java può causare un’eccezione

java.lang.ArithmeticException: / by zero

at Zero.calcolaQuoziente(Zero.java:29)

at Zero.main(Zero.java:21)

Exception in thread "main" Process Exit...

Page 7: Informatica 2 Lezione 7 Corso di laurea in matematica Informatica 2 Dott. Ing. Leonardo Vito Corso di laurea matematica indirizzo matematica per le applicazioni

Informatica 2 Lezione 7

1

L’istruzione try

• Si tenta di eseguire il codice e si intercetta un’eccezione si poine rimediotry {

blocco_1} catch (tipo_eccezione identificatore){

blocco_2}

• L’istruzione try identifica un blocco d’istruzioni in cui può verificarsi un’eccezione

Page 8: Informatica 2 Lezione 7 Corso di laurea in matematica Informatica 2 Dott. Ing. Leonardo Vito Corso di laurea matematica indirizzo matematica per le applicazioni

Informatica 2 Lezione 7

La clausola catch

• Un blocco try è seguito da una o più clausole catch, che specificano quali eccezioni vengono gestite

– Ogni clausola catch corrisponde a un tipo di eccezione sollevata

• Quando si verifica un’eccezione, la computazione continua con la prima clausola che corrisponde all’eccezione sollevata

Page 9: Informatica 2 Lezione 7 Corso di laurea in matematica Informatica 2 Dott. Ing. Leonardo Vito Corso di laurea matematica indirizzo matematica per le applicazioni

Informatica 2 Lezione 7

1

La clausola finally

• Un’istruzione try può avere una clausola finally opzionale

• Se non viene sollevata nessuna eccezione, le istruzioni nella clausola finally vengono eseguite dopo che si è concluso il blocco try

• Se si verifica un’eccezione, le istruzioni nella clausola finally vengono eseguite dopo le istruzioni della clausola catch appropriata

Page 10: Informatica 2 Lezione 7 Corso di laurea in matematica Informatica 2 Dott. Ing. Leonardo Vito Corso di laurea matematica indirizzo matematica per le applicazioni

Informatica 2 Lezione 7

1

Propagazione dell’eccezioni

• Se l’eccezione non viene intercettata e gestita dove si verifica, può ancora essere trattata a un livello più esterno

• L’eccezioni si propagano attraverso la gerarchia delle chiamate di metodi finché non vengono intercettate e gestite

– Perchè si possa gestire l’eccezione occorre che il metodo in cui si può verificare sia contenuto in un blocco try che possieda una clausola catch appropriata

Page 11: Informatica 2 Lezione 7 Corso di laurea in matematica Informatica 2 Dott. Ing. Leonardo Vito Corso di laurea matematica indirizzo matematica per le applicazioni

Informatica 2 Lezione 7

1

L’istruzione throw

• Un programmatore può definire un’eccezione estendendo una classe

– La classe Exception o una sua sottoclasse nella gerarchia

• L’eccezioni vengono sollevate con l’istruzione throw

• Solitamente un’istruzione throw è inclusa in un’istruzione if che valuta una condizione per verificare se deve essere sollevata l’eccezione

Page 12: Informatica 2 Lezione 7 Corso di laurea in matematica Informatica 2 Dott. Ing. Leonardo Vito Corso di laurea matematica indirizzo matematica per le applicazioni

Informatica 2 Lezione 7

La gerarchia di classi delle eccezioni

Object

Throwable

ErrorException

LinkageError

Virtual MachineError

AWTError

RuntimeException

ClassNotFoundException

NullPointerException

IndexOutOfBoundException

ArthemticException

NoSuchMethodException

Eccezioni non controllate

Page 13: Informatica 2 Lezione 7 Corso di laurea in matematica Informatica 2 Dott. Ing. Leonardo Vito Corso di laurea matematica indirizzo matematica per le applicazioni

Informatica 2 Lezione 7

1

Eccezioni controllate

• Un’eccezione può essere controllata o non controllata

• Un’eccezione controllata può essere sollevata solo in un blocco try o in un metodo che dichiara di poter lanciare un’eccezione di quel tipo con la clausola throw

• Il compilatore segnala se un’eccezione controllata non viene gestita propriamente

• Un’eccezione non controllata non richiede una gestione esplicita con la clausola throw

Page 14: Informatica 2 Lezione 7 Corso di laurea in matematica Informatica 2 Dott. Ing. Leonardo Vito Corso di laurea matematica indirizzo matematica per le applicazioni

Informatica 2 Lezione 7

Eccezioni non controllate

• L’eccezioni non controllate in Java sono quelle che si verificano a run time

• Tutte le altre sono controllate