Köszi, ez érdekes volt.
Viszont azzal nem értek egyet, hogy ha mondjuk használok 3 modult amik 3
különböző exception-t adnak, akkor azt az én metódusomnak ahogy vannak,
tovább kellene dobnia a felső szintnek.
Mi ezt a problémát úgy oldjuk meg, hogy a hívó fél elől elrejtjük a belső
exception-t. Ezzel nem szennyezzük szét az interface-t.
public interface MyInterface{
public void myMethod() throws MyException;
}
és az implementációban:
public class MyClass implements MyInterface{
void myMethod() throws MyException{
try {
... do some stuff
} catch (AException e){
throw new MyException(e);
} catch (BException e){
throw new MyException(e);
} catch (CException e){
.. ezzel már tudok valamit kezdeni
} finally{
.. itt pedig mindent lezárok
}
}
tehát a metódusom a hívó fél felé nem adja tovább
az összes lehetséges hibaokot, hanem szépen bezárja
egy saját exception-be. Ha valami okból a felső rétegnek
szüksége van mégis a belső exception típusára, akkor a
MyException-ből ki tudja vadászni.