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.