Salve.
Credevo mi fosse chiaro che Exception ed Error sono le due sottoclassi di Throwable, e invece a quanto pare c'è qualcosa che non mi quadra immediatamente.
Javac mi compila questo codice...
secondo cui methodX() è abilitato a generare una Exception... Poi però, invocato nel try, genera tranquillamente un Error semplicemente perché quello ci trova scritto!codice:public class Pag423 { public static void methodX() throws Exception { throw new AssertionError(); } public static void main(String[] args) { try{ methodX(); } catch(Exception e) { System.out.println("EXCEPTION"); } } }
Mi aspettavo un errore di compilazione, non la corretta esecuzione del methodX() invocato nel try{}...
La console riporta questo strano messaggio...
Con che logica Java risale da Exception a Throwable e poi scende in Error a prendere quell'errore?Exception in thread "main" java.lang.AssertionError
at Pag423.methodX(Pag423.java:3)
at Pag423.main(Pag423.java:7)