Mam interfejsimplementacja interfejsu uruchamia różne wyjątki
public interface DataDAO {
public void doSomething() throws Exception;
}
Powiedzmy, że istnieją dwie implementacje, który korzysta z bazy danych, aby uzyskać dane i jeszcze jeden, który używa WebService.
public class DataDAOJdbc implements DataDAO {
public void doSomething() throws Exception {
//Implement
}
}
public class DataDAOWebService implements DataDAO {
public void doSomething() throws Exception {
//Implement
}
}
Jak widać, problemem jest uruchamiany wyjątek super generyczny. Ponieważ obie implementacje wymagają podniesienia tego samego rodzaju wyjątku.
Implementacja Jdbc naprawdę tylko podnosi, powiedzmy, SQLException, podczas gdy implementacja Webservice tylko podnosi wyjątek IOException.
Pytanie brzmi, w jaki sposób mogę uczynić interfejs bardziej eleganckim, tak aby uchwycić właściwy wyjątek?
Pierwszą rzeczą, że chociaż było stworzenie własne wyjątek i zadeklarować go na poziomie interfejsu
public interface DataDAO {
public void doSomething() throws MyCoolException;
}
A potem, oczywiście wdrożyć accordinly.
Pytanie brzmi, czy to ma sens? Nigdy nie stworzyłem własnych wyjątków, więc nie jestem pewien, czy ma to sens, czy nie. Co powinienem wziąć pod uwagę przy tworzeniu MyCoolException?
Co powiesz na czerpanie inspiracji ze Springa i owijanie ich w RuntimeExceptions. –
@AjayGeorge cóż, chcę, aby te wyjątki były traktowane przez górny poziom, więc czyniąc je RuntimExceptions nie jest prawidłowy dla mnie, popraw mnie, jeśli się mylę :) –
Można również podklasy RuntimeExceptions, a następnie utworzyć [DataAccessException] (http : //static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/dao/DataAccessException.html) jak na wiosnę. –