![]() ![]() |
|
![]() ![]() |
Java possiede un meccanismo che permette al
programmatore di trattare le situazioni anomale in modo flessibile,
elegante e perfettamente integrato con la metodologia orientata ad
oggetti:
Come funziona il meccanismo di gestione delle eccezioni?
Ad esempio, se in un ciclo che legge dati da internet cade la connessione, è naturale gestire questa situazione da programma senza causarne necessariamente la terminazione. |
![]() ![]() |
|
![]() ![]() |
Per sperimentare con la propagazione delle eccezioni, si compili e si esegua la classe NestedNullPointer:
La macchina astratta Java scriverà qualcosa come:
elencando la catena dei metodi attivi nel momento in cui si verifica l'eccezione (bar - foo - main) e per ogni metodo la linea di codice dove si è verificata. |
![]() ![]() |
|
![]() ![]() |
Per comprendere bene il meccanismo di gestione
delle eccezioni, è utile vedere come questo si integra con il paradigma
orientato ad oggetti:
|
![]() ![]() |
|
![]() ![]() |
Vediamo un "frammento" della gerarchia di classi di eccezioni di Java:
|
![]() ![]() |
|
![]() ![]() |
In tutti gli esempi visti l'eccezione era
lanciata dall'interprete quando si verificava una situazione
imprevista. Talvolta un metodo può trovarsi a non poter gestire dei dati che riconosce come errati (ad esempio, ricevendo dei dati in lettura che non corrispondono al formato atteso)... Cosa fare in questi casi? Invece di elaborare dati errati si può lanciare un'eccezione con il comando throw. Sintassi
Esempio: lanciamo un'eccezione
(Sqrt)
|