22.3 Ausnahmebehandlungen macht ein
Programm sicherer |
|
Falsche Eingabe |
Gibt man in unserem Rechner in den
Eingabefeldern für a oder b z.B. Fließkommazahlen, also a = 2.3 und b =
4.0 ein und lässt sich daraus kein ggT(a,b) bestimmen, denn zur Berechnung
eines ggT werden ganze Zahlen erwartet. Fließkommazahlen sind aber in den
Eingabefelder zugelassen, wenn man die Lösung einer quadratischen
Gleichung sucht. Dann allerdings machen Eingaben von Buchstaben oder ganzen
Wörtern keinen Sinn, sie führen sogar zum Absturz des Programms. Wie kann
man nun ein Programm gegen falsche Eingaben schützen? Und wo, also in
welcher Klasse ist dieser Schutz zu implementieren ? Die zweite Frage
lässt sich schnell beantworten. Natürlich bietet sich wieder unser neuer
Button an, der 'weiß' ja welche Aufgabe zu lösen ist und ist ihm auch
'bekannt', mit welchen Eingaben er etwas anfangen kann und welche unsinnig
sind und damit zu einem Absturz führen würden. |
try -catch |
Kommen wir zur Beantwortung der ersten
Frage. Java bietet zum Abfangen von sog. Ausnahmen die
try
- catch
Routine an. Sie funktioniert so: Schreibe alles, was eine Methode
eigentlich tun soll in einen
try-Block:
public
<methodenNamen>(<Parameterliste>) {
In den Block von catch kommen alle
Dinge, die getan werden sollen, wenn es zu einer Ausnahme infolge einer
syntaktisch falschen Eingabe kommt. |
die neue Methode actionPer- formed(...) |
|
Steht tatsächlich in einem der
Eingabefelder ein Wert, der nicht zu einer Fließkommazahl vom Typ double
'verwandelt' (wir sagen später dazu gecastet) werden kann, wird beim Versuch
die Methode Double.parseDouble(...)
auszuführen,
eine Ausnahme in Form eines Objektes der Klasse
NumberFormatException geworfen,
die in der
catch-Klausel aufgefangen
und bearbeitet wird. Unser so geworfenes Ausnahmeobjekt nennen wir
nfe. Mit der Methode
getMessage() könnte man die Fehlermeldung anzeigen lassen. Dazu ersetze
man
|
|
Übungen |
Erstellen Sie weitere eigene JButtons,
die ihre eigene Methode actionPerformed(ActionEvent e) implementieren und
in denen Eingaben mit falschem Format abgefangen werden.
Hinweis: |
Lösungen | JButtonQuadGl.java, JButtonGl.java, JButtonGGT.java, JButtonKGV.java, JButtonFAK.java, JButtonFIB.java. |
RechnerGUI.java,
Mathematik.java |
|
|
|
zur Startseite | www.pohlig.de (C) MPohlig 2004 |