glcbattocchio ha scritto:
Esempio -> è un buona cosa delegare un eccezzione, intercettata da un catch, al metodo chiamante per gestirla in un try-catch piu grande?
Partiamo da un aspetto importante che bisogna sempre tenere in considerazione: detto in generale, ha senso
gestire (cioè fare
catch ( ..... ) { .... } con dentro qualcosa di "utile") solo ad un livello in cui SAI come poter "reagire" in modo appropriato, ad esempio mostrando un messaggio all'utente oppure facendo terminare/fallire qualcos'altro o restituendo un default da un metodo o altre cose del genere.
Facciamo un esempio molto banale, un metodo es.
public static void copiaFile(File sorgente, File destinazione) throws IOException
contenuto in una classe es. FileUtilities, ha senso fare un catch lì dentro? In generale: NO. O perlomeno, l'unica cosa per cui
può aver senso fare un catch lì dentro è per fare del "logging" (della eccezione, chiaramente). Ma dovrebbe comunque poi ributtare fuori la eccezione. Ecco perché c'è il
throws IOException.
Il punto è che questo copiaFile "non sa" dove viene usato, è molto a "basso" livello. Potrebbe essere usato in una applicazione Java "console", o in una applicazione grafica con JavaFX o in un web service, ecc...
Se il copiaFile lo invoco da un actionPerformed() di un listener in una GUI Swing, allora so (nel actionPerformed) che sono nel contesto di una interfaccia grafica e che (presumibilmente) la copia è stata richiesta dall'utente con una certa azione. Allora nel actionPerformed posso fare il catch di IOException e mostrare una messagebox all'utente "la copia del file è fallita".
glcbattocchio ha scritto:
Inoltre conoscete qualche sito che dato una certa parola chiave, rappresentante una operazione o argomento, mostra l'elenco di tutte le eccezione che ne hanno a che fare?
(esempio data la parola "file" si potrebbe ricevere un elenco in cui è presente la classe FileNotFoundException, insieme magari ad altre classsi del quale ora mi sfugge il nome....tipo quella generata se la lettura si interrompe)
La documentazione "javadoc" del framework standard (e di tantissime altre librerie/framework Java) fornisce già un elenco di tutte le classi. Oltre ovviamente a descrivere classi, metodi ecc... con tipicamente anche le eccezioni lanciate da ciascun metodo.
Poi se vuoi fare ricerche davvero estese, ci sono siti come
grepcode.com dove se cerchi es.
File te lo cerca in una quantità spropositata di librerie e framework.
Ma quello che è più importante è saper leggere e capire la documentazione "javadoc".