Index
Related
for each sulle collection
- Le collection sono ora dotate di un metodo forEach che prende in input un’interfaccia Consumer<? super T> dove T è il tipo generico della collection
- Ad esempio:
Collection<String> c = Arrays.asList(ʺaaʺ, ʺbbʺ, ʺccʺ);
- // In Java 7: for (String s : c) System.out.println(s); // In Java 8:- c.forEach(s → System.out.println(s)); // persino meglio: c.forEach(System.out::println);
Pila in java
-
esempi di pila:
-
– La pila di esecuzione (run-time stack) contenente i record di
attivazione delle chiamate a metodi
-
– Nell’implementazione della ricorsione…
-
-
Esiste un’implementazione standard mediante la classe Stack
– Implementa l’interfaccia List
-
Operazioni principali:
– push: inserisce un elemento in cima alla pila
– pop: rimuove l’elemento in cima alla pila
– peek: restituisce l’elemento in cima alla pila senza rimuoverlo
Come scegliere la migliore collezione
Gli alberi
- struttura basata su nodi con relazione padre figlio
Alberi più comuni sono binari
Rappresentazione alberi in java:
Eccezioni
-
Le eccezioni rappresentano un meccanismo utile a notificare e gestire gli errori
-
Un’eccezione indica che durante l’esecuzione si è verificato un errore
-
Il termine “eccezione” indica un comportamento anomalo, che si discosta dalla normale esecuzione
-
Codice più robusto e sicuro
Eccezioni notevoli
Cosa si può gestire con le eccezioni
Errori sincroni, che si verificano a seguito dell’esecuzione di un’istruzione
-
– Errori non critici: errori che derivano da condizioni anomale • divisione per zero
• errore di I/O
• errori durante il parsing -
– Errori critici o irrecuperabili: errori interni alla JVM
• conversione di tipo non consentito
• accesso ad una variabile riferimento con valore null • mancanza di memoria libera
• riferimento a una classe inesistente
Cosa non si può gestire
-
Eventi asincroni
-
– completamenti nel trasferimento I/O
-
– ricezione messaggi su rete
-
– click del mouse
-
-
Eventi che accadono parallelamente all’esecuzione e quindi indipendenti dal flusso di controllo
Try … Catch
Throws
e throw new
Throws: utilizzato per indicare che
throw new
Finally
solitamente nel blocco finally
vengono eseguite operazioni di clean up (es chiusura di file aperti ecc..)
Politica catch or declare
-
Ignorare l’eccezione e propagarla al metodo chiamante, a patto di aggiungere all’intestazione del metodo la clausola throws, seguìto dall’elenco delle eccezioni potenzialmente sollevate (declare)
-
Catturare l’eccezione, ovvero gestire la situazione anomala in modo opportuno, prendendo provvedimenti e contromisure atte ad arginare il più possibile la situazione di emergenza (catch)
Warning
- Se il requisito catch-or-declare non viene soddisfatto il compilatore emette un errore che indica che l’eccezione dev’essere catturata o dichiarata
Danger
se main non ha throws allora siamo obbligati a gestire la possibile eccezione se il main ha un throws allora possiamo anche non gestire l’eccezione e far terminare il programma ritornando l’eccezione sul terminale
I metodi printStackTrace() e getMessage()
Creare eccezioni personalizzate
La classe Throwable
- La classe che implementa il concetto di eccezioni è Throwable che estende direttamente la classe Object
- Gli oggetti di tipo Throwable sono gli unici oggetti che è possibile utilizzare con il meccanismo delle eccezioni
Gerarchia delle eccezioni
Classe Exception
- eccezioni interne alla JVM (classe RuntimeException): legate ad errori nella logica del programma
- eccezioni regolari (es. IOException, ParseException, TimeoutException): errori che le applicazioni dovrebbero anticipare e dalle quali poter riprendersi
Checked exception:
- È sempre necessario attenersi al paradigma catch-or-declar
- Sono eccezioni comuni, ovvero quelle che estendono Exception (ma non RuntimeException)
- Esempi:ParseException,ClassNotFoundException, FileNotFoundException
Unchecked exception:
- Non si è obbligati a dichiarare le eccezioni sollevate o a catturarle in un blocco try-catch (ma è possibile farlo)
- Sono eccezioni che estendono Error o RuntimeException
- Esempi: IndexOutOfBoundsException, ClassCastException, NullPointerException, ArithmeticException, OutOfMemoryError
Classe Error
- Error: cattura l’idea di condizione eccezionale irrecuperabile
- Assai rari e non dovrebbero essere considerati dalle applicazioni (es. ThreadDeath, OutOfMemoryError…)