Guten Tag!
Gegeben ist folgender Programmcode:
Wenn ich jetzt testr mit i=1 und j=-2 aufrufe, also so: testr(1,-2);
Gibt mir Eclipse folgende Ausgabe:
A
4
B
A
3
5
2
C
3
C
Ich kann das nach nachvollziehen, bis auf die letzten beiden Zeilen:
3
C
Das finally-Statement wird aus irgendeinem Grund 2 Mal aufgerufen, und die Variable i dekrementiert, so scheint es mir. Aber warum? Bei mir war nach 2 C eigentlich Ende...
Kann mir das jemand erklären?
Vielen Dank im Vorraus schonmal für alle Mühen und Antworten!
Gegeben ist folgender Programmcode:
Java:
class test {
public static void testr(int i, int j) throws Exception {
int[] a = { 5, 4, 3, 2, 1 };
try {
System.out.println("A");
if (i == 0) {
i = ++j - a[j];
System.out.println(j);
} else {
System.out.println(a[i++]);
int x = j / i;
System.out.println(a[x]);
}
} catch (Exception e) {
System.out.println("B");
testr(-j, -j);
} finally {
System.out.println(a[i]);
System.out.println("C");
}
}
}
Wenn ich jetzt testr mit i=1 und j=-2 aufrufe, also so: testr(1,-2);
Gibt mir Eclipse folgende Ausgabe:
A
4
B
A
3
5
2
C
3
C
Ich kann das nach nachvollziehen, bis auf die letzten beiden Zeilen:
3
C
Das finally-Statement wird aus irgendeinem Grund 2 Mal aufgerufen, und die Variable i dekrementiert, so scheint es mir. Aber warum? Bei mir war nach 2 C eigentlich Ende...
Kann mir das jemand erklären?
Vielen Dank im Vorraus schonmal für alle Mühen und Antworten!