Mam mały problem teoretyczny z konstrukcjami typu try-catch.
Wczoraj zdałem praktyczny egzamin z języka Java i nie rozumiem następującego przykładu:
try {
try {
System.out.print("A");
throw new Exception("1");
} catch (Exception e) {
System.out.print("B");
throw new Exception("2");
} finally {
System.out.print("C");
throw new Exception("3");
}
} catch (Exception e) {
System.out.print(e.getMessage());
}
Pytanie brzmiało "jak będzie wyglądał wynik?"
Byłem prawie pewien, że to będzie AB2C3, ALE niespodzianka, to nieprawda.
Prawidłowa odpowiedź to ABC3 (przetestowane i naprawdę tak jest).
Moje pytanie brzmi: gdzie poszedł wyjątek („2”)?
print(e.getMessage())
:). Pomyślałeś, że wynik będzie następujący AB2C3
: czy sądzisz, że najbardziej zewnętrzny catch
blok zostanie wykonany dwukrotnie?