Quote Originariamente inviata da Gas75 Visualizza il messaggio
Credevo mi fosse chiaro che Exception ed Error sono le due sottoclassi di Throwable
Infatti sono le uniche sottoclassi dirette di Throwable.

Quote Originariamente inviata da Gas75 Visualizza il messaggio
Javac mi compila questo codice...

Con che logica Java risale da Exception a Throwable e poi scende in Error a prendere quell'errore?
Gli Error sono tecnicamente "unchecked", quindi NON c'è alcun obbligo di dichiararli né di catturarli/gestirli. Gli Error comunque sono concettualmente un po' diversi dalle altre eccezioni, nel senso che rappresentano errori "gravi" a cui tipicamente e difficilmente si può porre rimedio.

Comunque AssertionError non ha nulla a che fare con Exception. AssertionError NON deriva da Exception .... deriva da Error che deriva da Throwable. Quindi NON è il tuo catch di Exception nel main che può catturare AssertionError.