29.01.2014 Aufrufe

Script Java

Script Java

Script Java

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

7.4 Exception Handling<br />

public void setTime (String s) throws NumberFormatException {<br />

String hString, mString;<br />

StringTokenizer tokenizer = new StringTokenizer(s,":");<br />

try {<br />

hString = tokenizer.nextToken();<br />

mString = tokenizer.nextToken();<br />

}<br />

catch (NoSuchElementException e) {<br />

throw new NumberFormatException();<br />

}<br />

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

}<br />

setzt die Uhrzeit gemäss der Eingabe durch den Benutzer. Hierbei lässt sie aber nur eine<br />

korrekte Zeitangabe zu.<br />

In der Methodenschnittstelle wird deklariert, dass die Methode setTime() eine Instanz<br />

der Klasse NumberFormatException werfen kann. NumberFormatException ist<br />

eine Unterklasse der Klasse IllegalArgumentException, die ihrerseits wiederum<br />

eine Unterklasse von RuntimeException ist. Sie signalisiert, dass der Versuch einen<br />

String zu einem Integer-Datentyp zu konvertieren missglückt ist, da der String nicht das<br />

erforderte Format aufweist.<br />

Ein Blick in den Methodenrumpf verrät, dass eine Instanz der Klasse<br />

NumberFormatException explizit geworfen wird:<br />

throw new NumberFormatException();<br />

Da sich diese Anweisung aber innerhalb eines catch statement befindet, muss ihre<br />

Durchführung vom Auftreten einer weiteren Exception abhängig sein. Diese Exception<br />

muss gemäss Deklaration vom Typ NoSuchElementException sein.<br />

Es fragt sich nun, welche Anweisungen den Auswurf einer Instanz von<br />

NoSuchElementException provoziert haben. Diese müssen durch das Schlüsselwort<br />

try gekennzeichnet sein und entweder explizit oder implizit eine<br />

NoSuchElementException werfen.<br />

Oberhalb des catch statement ist auch das erwartete try statement zu finden; es kapselt in<br />

sich die Anweisungen<br />

try {<br />

hString = tokenizer.nextToken();<br />

mString = tokenizer.nextToken();<br />

}<br />

Da in diesen Anweisungen kein throw statement vorhanden ist, muss die<br />

NoSuchElementException implizit generiert werden, es muss also eine Methode<br />

aufgerufen werden, welche ihrerseits eine solche Exception generiert.<br />

Die in der Klasse StringTokenizer (siehe Abschnitt 7.4.1.1) deklarierte Methode<br />

nextToken() wirft eine Instanz der Klasse NoSuchElementException, wenn<br />

193

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!