D4rkAng3l
03-05-2009, 18:05
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:
public Class Base{
public Base throws BaseException{ // Il costruttore potrebbe sollevare una BaseException di tipo checked
.....
.....
.....
}
}
ed una classe UsaBase:
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();
}
}
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....
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
Se ho un codice del tipo (molto sommario e parziale):
Una classe Base:
public Class Base{
public Base throws BaseException{ // Il costruttore potrebbe sollevare una BaseException di tipo checked
.....
.....
.....
}
}
ed una classe UsaBase:
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();
}
}
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....
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