Ho un'interfacciaimplementazione dell'interfaccia lancia diverse eccezioni
public interface DataDAO {
public void doSomething() throws Exception;
}
Consente di dire che ci sono due implementazioni, uno che utilizza database per ottenere i dati e un altro che utilizza un webservice.
public class DataDAOJdbc implements DataDAO {
public void doSomething() throws Exception {
//Implement
}
}
public class DataDAOWebService implements DataDAO {
public void doSomething() throws Exception {
//Implement
}
}
Come si può già vedere, il problema è l'eccezione super generica lanciata. Poiché entrambe le implementazioni devono sollevare lo stesso tipo di eccezione.
L'implementazione Jdbc si limita a dire SQLException mentre l'implementazione Webservice aumenta solo IOException.
La domanda è: come posso rendere l'interfaccia più elegante, quindi acquisisco un'eccezione corretta?
La prima cosa che ho pensato è stato creare il mio eccezioni, e dichiaro sul livello di interfaccia
public interface DataDAO {
public void doSomething() throws MyCoolException;
}
E poi, naturalmente, implementare accordinly.
La domanda è, ha senso? Non ho mai creato le mie eccezioni, quindi non sono sicuro se questo ha molto senso o meno. Inoltre, che cosa dovrei prendere in considerazione quando creo MyCoolException?
Che ne dici di trarre ispirazione da Spring e includerli in RuntimeExceptions. –
@AjayGeorge bene, voglio che quelle eccezioni siano trattate dal livello superiore, quindi renderle RuntimExceptions non è valido per me, correggimi se ho torto :) –
Bene potresti sottoclasse RuntimeExceptions e quindi creare un [DataAccessException] (http : //static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/dao/DataAccessException.html) come in primavera. –