Quote Originariamente inviata da Gas75 Visualizza il messaggio
per questo mi sembra tutto assurdo nel leggere certi codici e come vengono eseguiti.
Non c'è nulla di strano o assurdo ... basta conoscere le regole.


Quote Originariamente inviata da Gas75 Visualizza il messaggio
Non ho chiamato in ballo il catch perché lui si aspetta una Exception e non un Error, bensì l'esecuzione del blocco try che spassionatamente genera un errore che non è tra le sottoclassi di Exception.
Un metodo può dichiarare una eccezione checked ma non lanciarla. Semplicemente perché lui non la lancia ma ... un override in una sottoclasse potrebbe invece.

Quote Originariamente inviata da Gas75 Visualizza il messaggio
Secondo me doveva starci
codice:
public static void methodX() throws Error
Gli Error, lo ripeto, sono "unchecked". Non c'è alcun obbligo di dichiararli con il throws né di catturarli/gestirli in qualche modo. Quindi mettere throws Error per il compilatore non implica nulla. Al massimo è utile a livello documentativo, cioè nel javadoc che si può generare, verrebbe fuori ben evidente che il metodo dichiara Error. Insomma, serve più all'umano che al compilatore un throws del genere.
Gli Error comunque, tipicamente, non si dichiarano (mai fatto personalmente).

Quote Originariamente inviata da Gas75 Visualizza il messaggio
Insomma l'Error in questo caso si presenta senza invito (sennò il throws che viene specificato a fare...). Com'è possibile?
Sono le eccezioni "checked" che vanno dichiarate. Queste vanno considerate dal compilatore e dal programmatore.