Nem ugyanarról beszélünk. Nem egymás melletti szintekről, hanem egymás
alatti szintekről.
A kérdés az, hogy mondjuk elszáll a termék lekérdezés egy adatbázis hiba miatt. Akkor mit csinálsz?
Ami szerintem a logikus:
class ProductLogicImplementation implements IProductLogic{
public void getProduct(int id) throws ProductNotAvailableException{
try{
return dao.getProduct(id);
} catch (SQLException e){
throw new ProductNotAvailabeException(e);
}
}
}
Az nem logikus, hogy tetszőleges Exception-t továbbdobunk, hogy aztán majd
a felső réteg lekezelje:
public void getProduct(int id) throws SQLExeption{...}
Mivel pl. semmi nem garantálja, hogy a jó eséllyel interfaceként hivatkozott
osztályból pont SQLException fog jönni, hiába dobja egy konkrét implementáció
éppen azt.
Erre most jöttem rá, de hát végülis jobb későn, mint soha :)