View Full Version : [Java] Gestire eccezioni personalizzate
spillo491
09-10-2007, 11:34
Ciao ho un problema con le eccezioni personalizzate
metodo A chiama metodo B
metodo B chiama metodo C
metodo C chiama metodo D
dove il metodo A è nella classe_1, i metodi B e C sono nella classe_2 e il metodo D è nella classe_3.
L'eccezione è lanciata dal metodo D e devo propagarlo fino al metodo A che mostra a video un messaggio di errore. So che devo usare throws, throw e catch ma come ?
isAlreadyInUse
09-10-2007, 11:36
Java?
spillo491
09-10-2007, 12:40
Si, scusate :doh:
isAlreadyInUse
09-10-2007, 12:42
Intendi una cosa del genere?
public class Classe1 {
public void A() throws Exception {
new Classe2().B();
}
public static void main(String[] args) {
try {
new Classe1().A();
} catch (Exception e) {
e.printStackTrace();
}
}
}
public class Classe2 {
public void B() throws Exception {
C();
}
public void C() throws Exception {
new Classe3().D();
}
}
public class Classe3 {
public void D() throws Exception {
throw new Exception();
}
}
spillo491
09-10-2007, 12:56
Si la situazione è questa però il mio metodo D è cosi
public void D( ) throws Exception {
try {
if( a > 1)
throw new PippoException( "errore" );
}
catch ( PippoException de ) {
throw de;
}
}
isAlreadyInUse
09-10-2007, 13:01
Ma se la catturi non si propaga, in questo caso nel catch ne dovresti lanciare un altra che si propaga alle altre
spillo491
09-10-2007, 13:09
Infatti, è un controsenso dire throws Exception e poi dire
catch(PippoException)
dove PippoException extends Exception.
Però potrebbero esserci altre eccezioni nel blocco try quindi se ho un eccezione PippoException la catturo e poi la "getto" mentre se ho altre eccezioni le "getto" al metodo chiamante.
Ma perchè la PippoException la catturo e poi la getto ? Che senso puo avere ?
isAlreadyInUse
09-10-2007, 13:12
Non credo ce l'abbia
Si la situazione è questa però il mio metodo D è cosiAllora devi fare:
public void D () throws PippoException
{
...
if (a > 1)
throw new PippoException( "errore" );
...
}
E nota, se PippoException è una eccezione "checked" allora devi dichiararla con il throws, altrimenti se "unchecked" non è obbligatorio.
Sarà poi compito del chiamante o catturarla (e gestirla) o dichiararla a sua volta con il throws. E così via...
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.