Übungen zum Thema Exceptions

Werbung
Übungen zum Thema Exceptions
Übung 1
Eine Methode in der Klasse Operationen (siehe unten) soll die Wurzel einer reellen
Zahl berechnen. Falls dieser Methode eine negative Zahl übergeben wird, soll sie die
NegativeNumberException aufwerfen, welche bereits als von Exception
abgeleitete Klasse existiert.
public class Operationen {
...
public static float wurzel(float x) throws NegativeNumberException {
...
}
...
}
a)
Schreiben Sie den dazugehörigen Methodenkörper.
b)
Entwerfen Sie für diese Methode anschliessend ein kleines Programm (mainMethode) für den White-Box-Test 1). Dieses soll mit Hilfe von
System.out.println(...) seinen Befund ausgeben.
Notieren Sie, welchen Befund Sie beim Ausführen des Tests erwarten.
c)
1)
Beim White-Box-Test wird im zu prüfenden Programmstück jede Zeile mindestens einmal
durchlaufen.
Übung 2
Betrachten Sie den folgenden Programm-Code und beurteilen Sie die Aussagen
darüber in der Tabelle auf der nächsten Seite.
Die Zeilennummern dienen der Orientierung und gehören nicht zum Programm-Code!
1. class Quotient {
2.
3.
public static void main (String [] args) {
4.
try {
5.
System.out.println("Quotient = " + quotient(args[0],args[1]));
6.
}
7.
catch (ArithmeticException e) {
8.
System.out.println("Nicht durch 0 dividieren!");
9.
}
10.
}
11.
12.
private static int quotient (String zahl1, String zahl2)
13.
throws NumberFormatException {
14.
try {
15.
return Integer.parseInt(zahl1) / Integer.parseInt(zahl2);
16.
}
17.
catch (NumberFormatException e) {
18.
System.out.println("Falsches Format");
19.
return 0;
20.
}
21.
finally {
22.
System.out.println("Danke!");
23.
}
24.
}
25.
26. }
Was wird auf der Java-Konsole ausgegeben?
… nach folgenden Aufrufen
1.
Java 800 200
2.
Java drei 0
3.
Java 0 drei
4.
Java 0 10
5.
Java 10 0
Übung 3
Um die 64 Felder eines Schachbretts eindeutig spezifizieren zu können, werden die
Kolonnen mit den Buchstaben 'a' bis 'h' und die Reihen mit den Zahlen '1' bis '8'
bezeichnet. Eine eindeutige Feldangabe besteht sodann genau aus zwei Zeichen,
wobei das erste Zeichen ein Buchstabe ist. Gültige Feldbezeichnungen sind also
beispielsweise "a1" oder "g7".
Schreiben Sie eine Methode boolean checkChessField(String txt) /
pruefeFeld(String txt), die überprüft, ob der übergebene String str eine korrekte
Bezeichnung eines Feldes auf dem Schachbrett darstellt.
Allenfalls vorhandene Leerzeichen am Anfang oder Ende des Strings sollen zuvor entfernt werden.
Falls der String nicht korrekt ist, soll die Methode eine IllegalFieldException /
FieldErrorException erzeugen. Diese Exceptionklasse ist gegeben und besitzt den folgenden
Konstruktor:
// public FieldErrorException( String errormessage)
public IllegalFieldException(String errormessage)
Beim Auftreten einer Exception soll dem Konstruktor in errormessage ein kurzer String
mitgegeben werden, der den jeweiligen Fehlergrund beschreibt.
Die Aufgabe ist in folgenden drei Teilen zu lösen:
1. Stellen Sie eine Liste der möglichen Fehlerfälle zusammen.
2. Schreiben Sie die Methode checkChessField(String txt)/pruefeFeld(String
txt).
3. Schreiben Sie einen Aufruf der Methode checkChessField / pruefeFeld, der die
allenfalls entstehenden Exceptions abfängt und behandelt, indem er eine Fehlermeldung auf die
System-Konsole (System.out) ausgibt.
Bemerkung: Allenfalls benötigte import-Anweisungen können Sie weglassen!
Übung 4
Der Methode spanne / maxDifferenz werde ein eindimensionaler Array mit
einer beliebigen Folge von ganzen positiven Zahlen übergeben. Die Zahlen im Array
sind ungeordnet. Der Array muss mindestens zwei Zahlen enthalten.
Beispiel eines Arrays mit einer gültigen Folge von Zahlen:
{ 12, 2043, 5, 4, 244, 7912 }
Teilaufgabe 1:
Schreiben Sie die Methode public int spanne/maxDifferenz (int[] a). Sie soll die
Differenz zwischen der kleinsten und der grössten Zahl im Array a zurückgeben.
Teilaufgabe 2:
Ergänzen Sie die Methode spanne/maxDifferenz derart, dass sie bei Fehlerfällen
folgende Exceptions auslöst:
•
•
IllegalArgumentException , falls im Array eine oder mehrere negative Zahlen
vorkommen.
NullPointerException , falls der Array zu wenig Elemente enthält oder gar nicht existiert.
Teilaufgabe 3:
Schreiben Sie einen Aufruf der Methode spanne/maxDifferenz einschliesslich der dazu
notwendigen Exception-Behandlung. Bei einer IllegalArgumentException ist der Text
„Ungültiger Wert“ auf die Standardausgabe auszugeben, bei einer
NullPointerException der Text „Zuwenig Elemente“.
Herunterladen