A lezione presi questi appunti ma ora non mi ricordo più il perchè di quello che ho scritto doh :mc:
Se ho un codice del tipo (molto sommario e parziale):
Una classe Base:
ed una classe UsaBase:codice:public Class Base{ public Base throws BaseException{ // Il costruttore potrebbe sollevare una BaseException di tipo checked ..... ..... ..... } }
Sugli appunti ho scritto: il messaggio del catch non viene visualizzato perchè l'eccezione non è mai sollevata e non si entra mai nel blocco finally....codice:public Class UsaBase{ Base b; // Dichiara una variabile di tipo Base public UsaBase(){ // Costruttore try{ b = NewBase; // Nel try perchè il costruttore di Base potrebbe sollevare una BaseException }catch(BaseExcepion e){System.out.println("Nel Catch");} finally{System.out.println("Nel finally");} System.out.println("Nel costruttore"); } public static void main(...){ UsaBase x = new UsaBase(); } }
Perchè sta cosa
Il costruttore di Base potrebbe sollevare una BaseException.
Nel metodo main dichiato una variabile x di tipo UsaBase e la creo --> viene invocato il costruttore della classe UsaBase che prova ad eseguire il blocco try catch assegnando a b di tipo Base l'eventuale riferimento ad un nuvo oggetto istanza di Base...ma il costruttore di Base può sollevare l'eccezione...quindi secondo me se il costruttore di Base solleva l'eccezione nel costruttore di UsaBase viene catturata e stampato: "Nel Catch" e "Nel Finally"
o c'è qualche cosa che mi sfugge?
Grazie
Andrea

Rispondi quotando
VVoVe:

