Das folgende Javaprogramm wirft eine ArithmeticException wegen einer Division durch Null in der Methode divide().
Welche Konsolenausgaben erzeugt das Programm wegen seiner System.out.println() Aufrufe?
Das Beispielprogramm:
package s1.block10; public class Frage4 { 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"); d = 2 * divide(a, b); System.out.println("doubleDiv:after"); return d; } static int divide(int a, int b) { int d; System.out.println("divide:before"); d = a / b; System.out.println("divide:after"); return b; } }
Niveau | 2 |
Schwierigkeitsgrad | mittel |
Zeit | 4 Minuten |
Antwort zu Frage 3: Erkennen von Ausnahmen im Quellcode
public class Ausnahme { public static void main(String[] args) { int a = 5; int b = 0; int c = 0; System.out.println("main:Anfang"); // 1 c = divAussen(a, b); System.out.println("main:Ende"); // 7 } // Ende von main static int divAussen(int a, int b) { int d; System.out.println("divAussen:Anfang"); // 2 try { d = 2 * divInnen(a, b); } catch (ArithmeticException e) { System.out.println("divAussen: Division durch Null"); d = -2; } System.out.println("divAussen:Ende"); // 6 return d; } // Ende von divAussen static int divInnen(int a, int b) { int d; System.out.println("divInnen:Anfang"); // 3 try { d = a / b; // Hier tritt eine Ausnahme auf } catch (IllegalArgumentException e) { System.out.println("divInnen: Division durch Null"); d = -1; } catch (RuntimeException e) { System.out.println("divInnen: Division durch Null;" + " RuntimeException"); // 4 d = -2; } System.out.println("divInnen:Ende"); // 5 return d; } // Ende von divInnen } // Ende der Klasse.
- Printer-friendly version
- Log in to post comments
- 4594 views
Ablauf
Hallo,
ich bin von dem "feuern" von "IllegalArgumentException" verwirrt.
Laut Definition dürfte es doch bei einer Division durch 0 gar nicht zu einer solchen kommen (4), nur bei einer "ArithmeticException".
Wenn ich das Programm laufen lasse gibt es mir auch folgende Ausgaben:
run:
main:Anfang (1)
divAussen:Anfang (2)
divInnen:Anfang (3)
divInnen: Division durch Null; RuntimeException (4)
divInnen:Ende (5)
divAussen:Ende (6)
main:Ende (7)
BUILD SUCCESSFUL (total time: 0 seconds)
... es kommt also nach (3) zu keiner IllegalArgumentException.
Es fehlt in ihrer Lösung auch "divInnen:Ende (5)"
MfG .. Norman WIBI 12B
Richtig
Gut beobachtet,
Fehler wurde korrigiert.
Die Konsolenausgaben sind:
main:Anfang
divAussen: Anfang
divInnen: Anfang
divInnen: Division durch Null; RuntimeException
divInnen: Ende
divAussen: Ende
main: Ende