|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Aug 2003
Città: verona
Messaggi: 541
|
[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?
__________________
CASE: Cooler Master Stacker 831 Silver MOBO: Asus Maximus Formula CPU: Intel Q6600@2,4ghz RAM: 2x 1GB Corsair XMS2 pc2-8500@1066mhz + 2x2GB Corsair XMS2 pc2-8500@1066mhzVGA: ATI Sapphire RADEON 5830 1GB GDDR5 HD: 2 x WD Caviar SE16 500GB Raid 0 |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2774
|
Mi sembra corretto. Però usa il tag CODE per scrivere il codice sul forum
|
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
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.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Aug 2003
Città: verona
Messaggi: 541
|
vi ringrazio delle precisazioni e scusate se non ho usato il tag CODE
![]() nel main ho scritto: Codice:
... public static void main(String[] args) throws ProvinciaException ... try{ regione = Provincia.checkProvincia(elencoProv,provincia); }catch(ProvinciaException e){ e.toString(); } ...
__________________
CASE: Cooler Master Stacker 831 Silver MOBO: Asus Maximus Formula CPU: Intel Q6600@2,4ghz RAM: 2x 1GB Corsair XMS2 pc2-8500@1066mhz + 2x2GB Corsair XMS2 pc2-8500@1066mhzVGA: ATI Sapphire RADEON 5830 1GB GDDR5 HD: 2 x WD Caviar SE16 500GB Raid 0 |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
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: Codice:
String text = e.toString(); System.out.println(text); Codice:
e.printStackTrace();
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Aug 2003
Città: verona
Messaggi: 541
|
ok in effetti ora stampa il messaggio...grazie
![]()
__________________
CASE: Cooler Master Stacker 831 Silver MOBO: Asus Maximus Formula CPU: Intel Q6600@2,4ghz RAM: 2x 1GB Corsair XMS2 pc2-8500@1066mhz + 2x2GB Corsair XMS2 pc2-8500@1066mhzVGA: ATI Sapphire RADEON 5830 1GB GDDR5 HD: 2 x WD Caviar SE16 500GB Raid 0 |
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2774
|
Eh no, l'eccezione l'hai "catchata". Se volevi fermare il flusso non dovevi catcharla, oppure fermarlo nel catch.
|
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Aug 2003
Città: verona
Messaggi: 541
|
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
![]()
__________________
CASE: Cooler Master Stacker 831 Silver MOBO: Asus Maximus Formula CPU: Intel Q6600@2,4ghz RAM: 2x 1GB Corsair XMS2 pc2-8500@1066mhz + 2x2GB Corsair XMS2 pc2-8500@1066mhzVGA: ATI Sapphire RADEON 5830 1GB GDDR5 HD: 2 x WD Caviar SE16 500GB Raid 0 |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 11:33.