View Full Version : [JAVA] principiante con le eccezioni
ciao a tutti, sto cercando di capire come funzionano le eccezioni, vi pongo il mio problema.
ho creato una classe ProvinciaException
class ProvinciaException extends Exception {
String errore;
public ProvinciaException(String e){
super(e);
errore = e;
}
public String toString(){
return errore;
}
}
poi nella classe Provincia c'è il metodo checkProvincia che può generare quest'eccezione
public static int checkProvincia(Provincia elencoProvince[], String p) throws ProvinciaException{
...
if(check!=-1)return check;
else
throw new ProvinciaException("Non riesco a trovare la provincia inserita!");
}
è corretto questo modo di procedere? se si verifica la condizione allora lancio l'eccezione..o no?
wingman87
27-02-2009, 18:31
Mi sembra corretto. Però usa il tag CODE per scrivere il codice sul forum
E' tecnicamente corretto e, nella fattispecie, teoricamente consono.
Hai un blocco di codice impossibilitato a raggiungere il suo scopo a causa di una condizione esterna al blocco stesso (se fosse interna allora la condizione sarebbe un errore di sintassi o di significato).
Nulla quaestio, il blocco deve sparare un'eccezione.
vi ringrazio delle precisazioni e scusate se non ho usato il tag CODE :rolleyes: ...però adesso viene il problema..
nel main ho scritto:
...
public static void main(String[] args) throws ProvinciaException
...
try{
regione = Provincia.checkProvincia(elencoProv,provincia);
}catch(ProvinciaException e){
e.toString();
}
...
in teoria in questo modo se il metodo checkProvincia restituisce un eccezione non dovrebbe stamparmi l'errore?
Be', quasi.
e.toString() "converte" e in una stringa - in verità restituisce una rappresentazione testuale di e.
Devi anche stabilire che fine vuoi far fare a quella stringa. Se, come credo, intendi stamparla sulla console dei comandi, allora dirai - versione lunga:
String text = e.toString();
System.out.println(text);
Nota tuttavia chei "Throwable" Java hanno un meccanismo implicito per "stamparsi" sulla console, attivato con l'invocazione del metodo printStackTrace():
e.printStackTrace();
ok in effetti ora stampa il messaggio...grazie:) ma...domanda vitale..nonostante l'errore il flusso d'esecuzione non si interrompe..cioè mi va avanti a eseguire il codice del main pur essendo che gli ho fatto sollevare un'eccezione
wingman87
27-02-2009, 18:58
Eh no, l'eccezione l'hai "catchata". Se volevi fermare il flusso non dovevi catcharla, oppure fermarlo nel catch.
aaaah ecco cosa mi sfuggiva del tutto!...il blocco try catch gestisce l'eccezione nel senso che non blocca il flusso d'esecuzione...:P...infatti togliendolo mi da l'eccezione e interrompe l'esecuzione!...ok ora ci sono :)...grazie!
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.