Hierarchia wyjątków

0

Cześć

Mam problem z wyjątkami:

public void metodaA() {
try {
metdoaA1();
} catch (Exception e) {
tutaj przechwytywanie
}
}

private void metdoaA1() throws IOException {

    metodaAA1();

    logika w której moze powstać IOException
    
}

private void metodaAA1() throws IOException {
    również logika w której moze powstać IOException   

}

Tutaj wszystko działa. Natomiast jeżeli chce dodać w metodzie metdoaA1 osobny try - catch ale tak by i tak wszystko przeszło przez przechwytywanie w metodzie metodaA to już nie działa

private void metdoaA1() throws Exception{
try
metodaAA1();
catch(IOException e)
{
}

    logika w której moze powstać IOException
    
}

IOException z metody metodaAA1 leci w catch metody metodaA, ale IOException z metdoaA1 zatrzymuje się na catchu w tej metodzie i nie przechodzi do catcha metodyA. Zawsze mi się wydawało ze hierarchia wątków podaje wyżej.

Jak zrobić by bład w metodzie metdoaA1 przeszadł przez dwa catche ?
Pewnie dodanie throw new Exception w catchu rozwiąże problem ale jest sposób by nie tworzyć nowego wyjatku tylko podać go wyzej w hierarchi?

pozdro

0

wydaje mi się, że tak to powinno działać, wyjątek leci do pierwszego catcha jakiego napotka.
Możesz np nie dawać w metodzie A1 try/catch, dać tylko throws IOException.
A jak koniecznie potrzebujesz to rzucaj go "ręcznie"

Czemu throw new Exception? Nie lepiej throw e ?

1 użytkowników online, w tym zalogowanych: 0, gości: 1