View Single Post
Old 06-02-2003, 14:31   #14
/\/\@®¢Ø
Bannato
 
L'Avatar di /\/\@®¢Ø
 
Iscritto dal: Jul 2000
Città: Malo (VI)
Messaggi: 1000
Quote:
Originally posted by "kingv"


Un'eccezione (come dice il nome) serve a notificare al chiamante che si e' verificato un problema (infrastruturale, NON applicativo) su una chiamata.
Ma questo non ha a che fare col fatto che sia gettata in un costruttore o in un metodo.
Oltretutto l'eccezione (come dice il nome ) e' semplicemente qualcosa che accade non troppo spesso, e che quindi e' scomodo dover gestire singolarmente, oppure quando avviene non si hanno informazioni sul come comportarsi. Nel caso in oggetto serve poco perche' presumibilmente il login avviene in un solo punto e quindi ha poco senso sostituire un controllo if con un try{...}catch nello stesso punto. Se pero' l'eccezione rientra in una categoria piu' generica di eccezioni si puo' comunque utilizzarla, raccogliendola molto piu' a monte per fare un repulisti con la ramazza e chiudere il tutto il contesto in cui ci si trova (che non e' necessariamente l'applicazione intera).

Quote:
E' l'intefaccia che fornisci che deve condizionare la chiamata, non un'eccezione!
Non sono d'accordo. Dipende dallo "schema generale", visto anche che l'eccezione serve appunto per spostarsi dal contesto locale.
Quote:
Se vuoi condizionare l'istanziazione di un oggetto esiste un patter chiamato factory (con decine di varianti) che fa al caso tuo.
Che e' il secondo esempio che ho fatto
Comunque non e' necessariamente detto che le factory siano la cosa migliore, perlomeno se il solo scopo e' controllare i parametri. In fondo un wrapper attorno al costruttore non e' poi molto differente da un try-catch , e scrivi pure piu' codice.
/\/\@®¢Ø è offline   Rispondi citando il messaggio o parte di esso