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 Klasse
Die 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
- 4587 views