Hier werden in der Methode divide() mehrere Ausnahmebehandlungen (catch Blöcke) zu dem gegebenen try Block angeboten. Welche Blöcke werden ausgeführt und warum? Wie sieht die Konsolenausgabe aus?
package s1.block10;
public class Frage9{
public static void main(String[] args) {
int a = 5;
int b = 0;
int c = 0;
System.out.println("main:before");
c = doubleDiv(a, b);
System.out.println("main:after");
}
static int doubleDiv(int a, int b) {
int d;
System.out.println("doubleDiv:before");
try {
d = 2 * divide(a, b);
} catch (RuntimeException e) {
System.out.println("doubleDiv: RuntimeException");
d = -2;
}
System.out.println("doubleDiv:after");
return d;
}
static int divide(int a, int b) {
int d;
System.out.println("divide:before");
try {
d = a / b;
} catch (IllegalArgumentException e) {
System.out.println("divide: IllegalArgumentException");
d = -1;
} catch (ArithmeticException e) {
System.out.println("divide: ArithmeticException");
d = -2;
} catch (RuntimeException e) {
System.out.println("divide: RuntimeException");
d = -3;
}
finally {
System.out.println("divide: geschafft");
}
System.out.println("divide:after");
return d;
} // ende main()
} // Ende KlasseDie Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).
| Niveau | 2 |
| Schwierigkeitsgrad | mittel |
| Zeit | 6 Minuten |
Antwort zu Frage 8: Programmablauf bei mehrern try-catch-Blöcken
Der try-catch Block in divide() wird nicht ausgeführt da keine IllegalArgumentException vorliegt. Erst der try-catch Block in der äusseren Methode doubleDiv() kommt zum Zug. Der letzte Dokumentationsaufruf in divide() wird daher nicht aufgerufen.
main:before doubleDiv:before divide:before doubleDiv: Division durch Null doubleDiv:after main:after
- Printer-friendly version
- Log in to post comments
- 4643 views