Lo so che gli Error sono unchecked, allora quel throws Exception serve solo a confondere!
Togliendo throws Exception, noto che l'esecuzione è identica: Exception in thread "main" java.lang.AssertionError che sembra contraddittorio poiché AssertionError non appartiene alle Exception ma agli Error.
Cioè per Java il throw di un errore qualsiasi è sempre una Exception perché sto controllando io l'evento throw new AssertionError()?
Java cioè vede prima che il codice chiama qualcosa con un throw e per lui è una Exception, anche se dopo gli metto una classe creata da me che estende un qualunque Throwable?
Per fare andare in porto l'esecuzione, devo scrivere:
Stavolta viene eseguito il catch perché ho da gestire l'errore che ho creato, sebbene la sua non gestione (quando il catch si aspetta una Exception) interrompe l'esecuzione avvisandomi in console di una Exception.codice:public class Pag423 { public static void methodX() { // tolto il throws Exception poiché inutile throw new AssertionError(); } public static void main(String[] args) { try{ methodX(); } catch(AssertionError ae) { // ora può gestire ciò che il throw ha generato System.out.println("EXCEPTION"); } } }


Rispondi quotando

