( sz332 | 2013. 02. 06., sze – 20:50 )

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.