Junior
Wordt de finally-blok altijd uitgevoerd in een try-catch-constructie?
sobes.tech AI
Antwoord van AI
Nee, niet altijd. finally kan in de volgende gevallen niet worden uitgevoerd:
- Het beëindigen van de JVM tijdens de uitvoering van het
try- ofcatch-blok. Bijvoorbeeld bij het aanroepen vanSystem.exit(). - JVM-fout (bijvoorbeeld out of memory error of stack overflow).
- Een oneindige lus in het
try- ofcatch-blok. - Het beëindigen van de thread die het
try-catch-finally-blok uitvoert.
In andere gevallen, zelfs als er een unchecked uitzondering wordt gegooid of er wordt geretourneerd uit het try- of catch-blok, wordt het finally-blok uitgevoerd.
public class FinallyExample {
public static void main(String[] args) {
try {
System.out.println("In het try-blok");
// JVM afsluiten voordat finally wordt uitgevoerd
// System.exit(0);
throw new RuntimeException("Forse uitzondering");
} catch (RuntimeException e) {
System.out.println("In het catch-blok: " + e.getMessage());
// Terugkeren uit catch, finally wordt toch uitgevoerd
// return;
} finally {
System.out.println("In het finally-blok"); // Deze code wordt uitgevoerd
}
System.out.println("Na try-catch-finally"); // Deze code is mogelijk niet bereikbaar
}
}