29.01.2014 Aufrufe

Script Java

Script Java

Script Java

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

7.4 Exception Handling<br />

keine Tokens mehr im String vorhanden sind. Wenn also beispielsweise ein Benutzer<br />

„8.00“ anstatt „8:00“ eingibt, würde eine NoSuchElementException generiert, da<br />

der StringTokenizer gar keinen Separator vorfindet.<br />

In der Methode setTime() wird wohl eine durch nextElement() hervorgerufene<br />

NoSuchElementException abgeblockt, dafür aber eine<br />

NumberFormatException generiert, die nicht in der Methode selber behandelt wird.<br />

Am Ende der Methode setTime() erfolgt der Aufruf von setTime() 1 . Hierbei<br />

werden die Parameter<br />

Integer.parseInt(hString), Integer.parseInt(mString)<br />

übergeben. Die in der Klasse Integer 2 deklarierte Klassenmethode parseInt()<br />

konvertiert einen als Parameter erhaltenen String zu einem int. Dieser wird als Wert<br />

zurückgegeben. Sollten jedoch die im String enthaltenen Zeichen - mit Ausnahme des<br />

ersten Zeichens, welches auch ein Minuszeichen darstellen kann - keine Zahlen sein, wird<br />

eine NumberFormatException geworfen.<br />

In der Methode setTime() kann also einmal explizit im catch statement und einmal<br />

implizit durch die Methode parseInt() eine NumberFormatException generiert<br />

werden. Da innerhalb der Methode aber kein passender catch statement vorhanden ist, wird<br />

die NumberFormatException weitergeworfen, was das Schlüsselwort throws in der<br />

Signatur bestätigt. Schauen wir nun in der aufrufenden Methode nach, ob diese ein catch<br />

statement für eine NumberFormatException deklariert.<br />

In den geschweiften Klammern des letzten else statement 3 der Methode<br />

actionPerformed() in der Klasse UserFrame wird die Methode setTime()<br />

aufgerufen:<br />

else {<br />

try {time.setTime(text.getText());}<br />

catch (NumberFormatException e) {<br />

message.setText("Invalid Format");<br />

return;<br />

}<br />

}<br />

An dieser Stelle im Programm sehen wir auch den Methodenaufruf von setTime() mit<br />

dem Schlüsselwort try versehen und finden das gesuchte catch statement. Das<br />

1 Wieder ein Beispiel für method overloading. Dieses Mal ist die Methode setTime() gemeint, welche<br />

Parameter vom Typ int erwartet.<br />

2 Siehe Abschnitt 4.3.3.<br />

3 Da alle anderen Fälle in den vorhergehenden else statements abgeklärt wurden, muss es sich beim letzten<br />

else statement um den Fall handeln, dass der Benutzer die RETURN-Taste im TextField gedrückt hat.<br />

194

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!