Wird der finally-Block in Java immer ausgeführt? Wir klären die Nuancen
Hallo zusammen! Ich bin ein Java-Anfänger und bin bezüglich des finally-Blocks verwirrt. Ich habe gelesen, dass finally immer ausgeführt wird, unabhängig davon, ob eine Exception geworfen wird oder nicht. Aber in der Praxis bin ich auf einige Situationen gestoßen, in denen das scheinbar nicht der Fall ist.
Hier ist ein Codebeispiel, das ich zum Testen geschrieben habe:
```java
public class FinallyTest {
public static void main(String[] args) {
System.out.println("Ergebnis: " + testFinally());
}
public static int testFinally() {
try {
System.out.println("Im try-Block");
return 1;
} catch (Exception e) {
System.out.println("Im catch-Block");
return 2;
} finally {
System.out.println("Im finally-Block");
return 3; // Das verwirrt mich
}
}
}
```
Ich habe erwartet, dass die Methode 1 (aus try) zurückgibt, aber sie hat 3 zurückgegeben! Hat finally also den return überschrieben? Oder verstehe ich etwas falsch?
Außerdem habe ich gehört, dass wenn im