ultimamante sembra ritornato il tema "checked exceptions: sono
veramente utili ?", anche perche' il proposal per le closures ha
diversi costrutti che lo complicano proprio perche' deve supportare le
checked exceptions (vedi qui: http://gafter.blogspot.com/2007/05/removing-language-features.html).
Detto che la JVM non ha il concetto di checked/unchecked (che e' solo
implementato a livello di compilatore), qual e' la vostra esperienza
in materia di checked exceptions ?
Tralasciate i commenti facili del tipo "non servono, tant'e' che
spring/hibernate le hanno rimosse dalle loro API", ma piuttosto
*quando* servono.
La mia opinione e' che le checked exception debbano essere usate con
cautela, ma che facciano parte della documentazione di una routine e,
visto che vengono "enforced" dal compilatore, ci aiutano a fare meno
errori esattamente come il compilatore ci aiuta a fare meno errori
usando i generics.
Esempio pratico:
public User login(String username, char[] password) throws LoginFailedException
Per me LoginFailedException dovrebbe essere checked, ma per esempio
non mi interessa che eventuali IOExceptions o SQLExceptions vengano
viste dal client come checked (che tanto non ci puo' fare nulla), ne'
che vengano wrappate.
Ciao, ultimamante sembra ritornato il tema "checked exceptions: sono veramente utili ?", anche perche' il proposal per le closures ha diversi costrutti che lo...
... Riprendendo Meyer, le eccezioni fanno parte del contratto tra client e provider. Nel tuo esempio se la precondizione che la coppia utente/password sia ...
... Non parlerei tanto di "accoppiamento", in quanto tu effettivamente stai rispettando il contratto del metodo che stai chiamando gestendo User oppure...
Inglima Davide
Davide.Inglima@...
Jul 18, 2007 8:38 am
... Io sono d' accordo con Davide e Luigi. L' eccezione checked deve essere un caso d' uso che il client sa e deve gestire. In quell' esempio, se il client non...
Ciao, ... Mi sembra corretto "a naso", ma qui il problema non e' tanto il naso (sebbene Carlo ci tenga ;) ma un problema di design. Se io scrivo una routine: ...
Dove metterei quel login? In una classe Service. Chiamiamola UserAuthenticationService. Quella classe service andrà a chiamare a sua volta un Repository ...
Ciao, ... Non li puoi gestire nel Repository i problemi di SQL, e infatti penso che tu intenda che da quel layer "scappano" RuntimeSQLExceptions. ... Non ho...
Mi spiego meglio... ... Beh il fantomatico repository userà si spera un connection manager o che ne so. Niente stack trace sul client, ci mancherebbe. ...
Ciao, ... Il paragone corretto e': OutputStream f = null; try { f = new FileOutputStream("testfile"); // .. process System.out.println("Congratulations -- no...
Ciao, ... Esattamente il mio punto. La throws clause e' parte della documentazione "viva" del metodo e non marcisce come i javadocs. E da qui la domanda sul...
Quando le checked hanno un senso. Mai? Mai dire mai. Mi accontento del suggerimento dell'IDE, il compilatore mi disturba. Il codice che viene fuori da...
Concordo in pieno, infatti l'annotation era la mia opzione favorita nella scorsa discussione sulle checked di qualche tempo fa. Credo che renderebbe tutto...
... Per quanto riguarda LoginFailedException non saprei... è un po' come dire, per fare un esempio cretino, quel caso dove parecchie funzioni che in java...
Inglima Davide
Davide.Inglima@...
Jul 19, 2007 8:42 am
Ciao, ... Esatto. In C non hai nessun modo di fare l'enforcing di questo, in Java ce l'hai dichiarando l'eccezione checked. Chi scrive la routine decide, a un...
Ripescato, per caso(*), un vecchio link, molto buono che aggiunge un po' più di motivazioni al no alle unchecked. http://www.artima.com/intv/handcuffsP.html ...
... Non mi ha convinto tanto, sinceramente. Sono tutte cose giustissime (ci mancherebbe), se applicate ad un modo di usare le eccezioni checked che secondo me...
... Peccato, ci riprovo. ... Quel tuo costringendo i client ad adeguarsi mi ha ravvivato un ricordo, esperienza vissuta. Mega progetto, 10-15 team che lavorano...
... Immagino, davvero. Sai cos' è? Che per come la vedo io una clausola throw su un metodo dovrebbe evolversi con la stessa frequenza con cui si aggiunge o ...
Ciao, ... Che la birra di Londra (spero che non sia il lavaggio del cervello) ti fa male :) Stai diventando troppo talebano senza che serva a qualcosa. E'...
E' la birra è la birra :-D CMQ non voleva essere una sparata ma più una provocazione da cui magari intavolare una discussione interessante... ;-) ... -- ...
Simone Bordet ha scritto: On 7/21/07, Antonio Terreno <antonio.terreno@...> wrote: Oppure cambiamo discorso, secondo me le prossime due cose (dopo tipi e...
speech, speech, speech (in italiano pero') :) ... -- - Danilo Ventura - speech, speech, speech (in italiano pero') :) Il 24/07/07, Carlo Bottiglieri <...
... Infatti, una possibilità in più non può che fare piacere basta che si usata con cautela dallo sviluppatore. Cmq di quell'articolo nn mi piace quando...
... Secondo me dipende dal significato che dai alla LoginFailedException. Se stabiliamo che la routine login debba ritornare un' istanza di utente, tranne nei...
Secondo me la questione non è tanto se il client saprà gestire o meno IOException e SQLException. Una unchecked non ti impedisce di gestirla, se vuoi. La...
Una piccola nota di fondo. Non uso spesso le eccezioni per rappresentare il normale comportamento del sistema, Bloch adduce motivi di prestazioni, io lo faccio...
+1, anche io facevo cosi', diciamo che questo e' il primo giro di refactoring, il secondo sarebbe cambiare java e levarsele di mezzo :-D ... -- Antonio Terreno...