View Full Version : consiglio java - try/catch/throws e scelte stilistiche
Ciao a tutti , volevo chiedervi un consiglio...
in una classe qual'è il modo "stilisticamente" più corretto di usare il costrutto try/catch per la gestione delle eccezioni?
facciamo l'esempio di non voler usare il throws per gestire per esempio l'eccezione IOException... usiamo quindi il try/catch... ora... l'unico modo è usarlo ogni volta che uso readLine del BufferedReader? non va a scapito della leggibilità del file sorgente o c'è una soluzione alternativa?
gabriele81
25-11-2003, 10:04
Se nel codice hai più volte l'istruzione readLine puoi mettere il try prima della prima volta in cui viene chiamata e lo chiudi dopo l'ultima volta che la chiami, se in mezzo ci sono istruzioni che non lanciano eccezioni non c'è nessun problema, puoi metterle dentro il try comunque, in questo modo con un unico try/catch puoi catturare tutte le eccezioni che possono partire.
Dipende com'è strutturato il tuo progetto...solitamente di demanda alla classe a livello superiore la gestione delle eccezioni, magari richiamando un metodo (es parseException) di una classe appositamente dedicata. Come si demanda?...semplicemente "lanciando" l'eccezione dichiarando il metodo throws Exception.
Altra buona scelta può essere combinare le due cose, per lanciare eccezione apposite...
public myMetodo()
throws Exception
{
FileInputStream fis = null;
ObjectInputStream ois = null;
try
{
fis = new FileInputStream( .... );
ois = new ObjectInputStream(fis);
desc = (Dati)ois.readObject();
return desc;
}catch(FileNotFoundException fnfe){
fnfe.printStackTrace(System.err);
throw new MyException1("mio messaggio");
}catch(StreamCorruptedException sce){
sce.printStackTrace(System.err);
throw new MyException2("Mio messaggio");
}
Nella classe superiore puoi interecttare MyException1 e MyException2...
Non so se riesci a cogliere l'utilità della cosa, principalmente è che puoi crearti ad oc le tue eccezioni coi tuoi messaggi...
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.