Was ist die Ausgabe dieses Codes?

2 Antworten

Ablauf des Programms

main ruft a() auf.

a() ruft b() auf.

b() ruft c() auf.

c() wirft sofort eine Exception.

Die Ausnahme wird vom catch-Block in b() gefangen.

Der catch-Block ist leer, also passiert nichts.

System.out.println("after c") wird nicht ausgeführt, da der Codefluss nach einer gefangenen Exception nicht in den try-Block zurückkehrt.

Die Kontrolle kehrt zu a() zurück.

System.out.println("after b") in a() wird ausgeführt, da die Ausnahme in b() bereits behandelt wurde.

Programm endet.


starplatinum234 
Beitragsersteller
 05.01.2025, 17:10

ausgabe ist dann nur after b richtig?

Lupoyes  05.01.2025, 17:12
@starplatinum234

Ja, da "after c" nach c() kommen würde, welches eine Exception würft.
Da im a() Block b() abgehandelt wird kommt danach "after b" als Ausgabe.

Der Ablauf ist so: main ruft a() auf, a() ruft b() auf. In b() wird c() aufgerufen, das eine Exception wirft. Die Exception wird vom catch-Block in b() abgefangen, aber da der Block leer ist, passiert nichts weiter. Danach wird “after b” in a() ausgegeben, weil der Ablauf dort weitergeht.

Gibst du mir ein Keks ? Das war eine ziemliche schwere Frage