Direi che per funzionare dovrebbe anche funzionare, ma la dichiarazione del costruttore è un po' strana: tu dichiari che il costruttore può lanciare una eccezione di tipo FileNotFoundException, ma al suo interno catturi questa eccezione se viene sollevata e non la propaghi all'esterno... :master:Originariamente inviato da escaria
Ciao , sto scrivendo una classe per un progettino universitario, nel codice sotto c'è solo un metodo a cui viene passato il nome di un file da aprire.
il contenuto del file viene poi inserito in un oggetto stringbuffer per essere elaborato.
non sono sicuro di aver capito esattamente come funzionano le eccezioni , qualcuno può dare un'occhiata al codice e dirmi se ho usato le eccezioni in modo giusto ?
grazie
codice:class Weditor { StringBuffer $_buffer_ = new StringBuffer(); int $_curPos_ = 0; /** ----------------------------------------------- **/ public Weditor(String nomefile) throws FileNotFoundException { File f = new File(nomefile); int ch; try{ if(f.exists()) { try { FileInputStream fis = new FileInputStream(nomefile); InputStreamReader isr = new InputStreamReader(fis, "UTF8"); Reader in = new BufferedReader(isr); while ((ch = in.read()) > -1) { $_buffer_.append((char)ch); } in.close(); } catch (IOException e) { System.out.println(e.getMessage()); } } else { throw new FileNotFoundException("File non trovato."); } } catch (FileNotFoundException e) { System.out.println(e.getMessage()); } } }
Tu hai usato, giustamente, l'istruzione throw per lanciare questa eccezione con un messaggio personalizzato, ma il punto in cui hai usato questa istruzione è all'interno di un blocco try/catch che, ovviamente, la cattura appena lanciata e la fa "morire"...
Dovresti scegliere: o gestire l'eccezione (come hai fatto) senza dichiarare che il metodo può lanciare eccezioni (dato che non è vero!!), oppure lasciare all'utilizzatore della classe l'onere di gestire un'eventuale eccezione, eliminando il blocco try/catch più esterno.
Ciao.![]()