Skip to Content

7 Programmablauf bei mehrern try-catch-Blöcken

Welche der beiden catch Blöcke werden im folgenden Programm durchlaufen? Welche Ausgaben erzeugt das folgende Programm?

Hinweis: Division durch 0 führen zu einer ArithmeticException.

package Kurs2.Exception;
public class Frage3 {

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 (ArithmeticException e) {
System.out.println("doubleDiv: Division durch Null");
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 (ArithmeticException e) {
System.out.println("divide: Division durch Null");
d = -1;
}
System.out.println("divide:after");
return d;
}
}

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 6 Minuten

 

Antwort zu Frage 6: Benutzung verschiedener Ausnahmen (Exception) und Zusicherungen, Annahmen (Assertions)

Bei welcher der drei Konstrukte, kann der Entwickler zur Laufzeit das Auslösen durch eine Konfiguration des Laufzeitsystems unterdrücken?

  • Das Prüfen von Assertions kann man zur Laufzeit unterdrücken.

Auf welche der drei Möglichkeiten muss er beim Aufruf, durch eine entsprechende Implementierung reagieren.?

  • Checked Exceptions

Warum ist es nicht sinnvoll für alle Ausnahmen die in einer Methode auftreten können eine Behandlung zu implementieren? Nennen Sie eine Beispiel.

  • Es können in jedem Befehl Ausnahmen auftreten. Die Ausnahme kann durch ein externes Ereignis ausgelöst werden.(Netzwerkfehler, kein Hauptspeicher etc.)
  • Beispiel: Eine Out-of-Memory-Ausnahme kann bei fast jedem Aufruf ausgelöst werden.

Comments

Alternative?

Kann man bei der dritten Assertion die einzelnen Prüfungen auch mit && voneinander trennen?

Ja

Ja, das geht auch. Hier gibt es mehrere Lösungen.

Fehler?

assert (laenge>=0);
assert (breite>=0);
assert (hoehe>=0);

Laut Kommentar müssen alle Pakermaßen positiv sein. Wenn nicht der Fall ist, soll nach der Prüfung
von Assertions eine Fehlermeldung ausgegeben werden. Hier wird aber geprüft ob es positiv ist.

Richtige Überlegung

Stimmt!
Wird korrigiert.

Fehler

hier muss 2000 stehen anstatt 200 assert (laenge+breite+hoehe<=200);

Korrekte Beobachtung

Danke. Das stimmt. Fehler wurde verbessert.



blog | by Dr. Radut