Carmine2898 ha scritto:
Throwable: superclasse delle eccezioni.
Sì, superclasse di TUTTE le eccezioni.
Carmine2898 ha scritto:
Error e Exception le due sottoclassi principali.
Sì, le uniche due sottoclassi
dirette.
Carmine2898 ha scritto:
Error -> Errori fatali, impossibili da gestire. Ad esempio? Esaurimento delle risorse del sistema?
Non "impossibili" in senso stretto/assoluto. Ma comunque altamente difficili da trattare. Nel senso che specialmente per certi Error, se capitano, è altamente improbabile riuscire a "recuperare" il filo corretto della esecuzione senza altre conseguenze "catastrofiche".
Carmine2898 ha scritto:
Exception -> Errori controllabili. Possibili da gestire per il programmatore con il blocco try\catch.
Ok
Carmine2898 ha scritto:
Il try riguarda il blocco di codice da eseguire e il catch cattura l'eventuale eccezione.
Sì
Carmine2898 ha scritto:
La clausola finally? Non ho ben capito la sua utilità.
Serve ad eseguire un blocco di codice SEMPRE, comunque, in qualunque caso, sia che il blocco try completi normalmente, sia che ci sia stata una eccezione nel blocco try catturata oppure NO da uno dei catch.
Carmine2898 ha scritto:
Tra le sottoclassi di Exception è presente una che genera eccezioni incontrollabili: RunTimeException.
Non "incontrollabile". Ma "non controllato" nel senso che il compilatore NON applica alcun controllo e non impone alcunché al programmatore, né di catturarle, né di dichiararle (con il throw
s)
Carmine2898 ha scritto:
Perché? E soprattutto: in quale caso vengono generate le seguenti eccezioni? ArithmeticException, NullPointerException, IndexOutOfBoundsException?
Ci sono eccezioni come NullPointerException che possono potenzialmente essere lanciate ovunque viene usato un
reference per accedere ad un campo/metodo. Se fosse "checked" forzerebbe il programmatore a farsi continue domande su come gestirla e/o dichiararla. Sarebbe uno stillicidio ....
Ecco perché queste sono unchecked. Se capitano ... generalmente denotano un "baco". Che va corretto, ovviamente.
Carmine2898 ha scritto:
Le altre sottoclassi di Exception, eccezioni possibili da controllare: ClassNotFoundException, IOException, AWTExcpetion, RuntimeException. Quand'è che vengono lanciate queste eccezioni?
In casi ben specifici. IOException quando si usano le classi di I/O. ClassNotFoundException specialmente quando si usa la reflection (ma anche in altri contesti).
Carmine2898 ha scritto:
L'eccezione "NumberFormatException" è l'unica in cui mi sono imbattuto al momento, di quale sottoclasse fa parte?
Quando hai dubbi di questo tipo, consulta la documentazione javadoc.
Ad esempio:
https://docs.oracle.com/javase/8/docs/api/java/lang/NumberFormatException.html
All'inizio vedi benissimo la gerarchia.