![]() |
|
|
![]() |
JAVA - Fehlerverarbeitung - Exceptions
|
![]() |
Exceptions sind "Fehlerverarbeiter". Mit ihrer Hilfe lassen sich Fehler, z.B. beim Laden von Dateien, so verarbeiten, daß das Programm trotzdem weiterläuft und nicht beendet wird.
So würde z.B. ein Applet, das eine Musikdatei laden und abspielen soll, einen Fehler anzeigen, wenn die Musikdatei nicht vorhanden ist. Die Folge wäre, daß das Programm beendet wird. Würde ein entsprechendes Exception verwendet werden, so könnte man sinngemäß sagen: "Wenn du die Datei nicht findest, zeige mir folgende Fehlermeldung an: ...".
![]() |
Jetzt sind Exceptions nicht etwas, was für alles funktioniert. Es gibt für bestimmte "Problemfälle" immer entsprechende Exceptions. Welches Exception für welches Objekt zuständig ist, findet man z.B. in der JDK-Dokumentation bei den entsprechenden Constructors der Objekte.
z.B.
URL
public URL(String spec) throws MalformedURLException Creates a URL object from the String representation. This constructor is equivalent to a call to the two-argument constructor with a null first argument. Parameters: spec - the String to parse as a URL. Throws: MalformedURLException - If the string specifies an unknown protocol. See Also: URL(java.net.URL, java.lang.String)
Diese Exceptions sind eigene Klassen und verarbeiten die Fehler, die bei bestimmten Objekten auftreten können. Bei URL-Objekten ist das Exception MalformedURLException zuständig. Es tritt immer dann auf, wenn eine bestimmte Internet-Seite nicht geladen werden kann, also entweder wenn die Datei nicht vorhanden ist, oder der Server nicht aufzufinden ist.
Definition
try { URL url1 = new URL("http://www.selfjava.de"); getAppletContext().showDocument(url1); } catch(MalformedURLException e){ ... } finally { ... }
Exceptions werden immer mit einer try-catch-Routine verarbeitet bzw. abgefragt.
Try heißt "versuche" und catch heißt "auffangen". finally gibt an, was ausgeführt werden soll, egal ob die try-Anweisungen erfolgreich ausgeführt werden konnten, oder nicht.
finally wird allerdings nicht immer mit angegeben, nur in bestimmten Fällen.
Also in try wird z.B. versucht, eine bestimmte URL zu laden. Gelingt dies, ist das kein Problem - das Programm wird einfach nach catch weitergeführt. Gelingt es aber nicht, wird in die catch-Anweisung verzweigt. Theoretisch braucht man hier nichts hineinschreiben. Sie behebt automatisch das Problem, z.B. daß die URL nicht geladen werden konnte. Normalerweise werden hier Informationen ausgegeben, z.B. ein Text daß die URL nicht geladen werden konnte. In komplizierteren Programmen muß man hier einige Methoden aufrufen oder das Applet beenden, oder man versucht z.B. eine andere URL zu laden, indem man in die catch-Routine eine weitere try-catch-Routine einbaut.
![]() |
Exception | Beschreibung |
ArrayIndexOutOfBoundsException | Wenn bei einem Array auf Felder zugegriffen wird, die nicht existieren |
ClassNotFoundException | Klasse konnte nicht gefunden werden (z.B. falscher Klassenname oder Verzeichnis angegeben) |
Exception | Basisklasse aller Exceptions (kann alle Arten von Fehlern auffangen) |
NullPointerException | Ein Objekt hatte den Wert null, obwohl ein anderer Wert gefordert war. |
NumberFormatException | Es wurde versucht, einen Datentyp in einen anderen Datentyp zu konvertieren, der aber einen Wert hatte, der nicht konvertiert werden konnte (z.B. der String "A4" soll in einen int umgewandelt werden) |
MalformedURLException | URL stimmt nicht (entweder besteht keine Verbindung zum Internet oder Adresse ist falsch geschrieben) |
![]() |
import java.applet.*; import java.awt.*; public class Zahl_Exception extends Applet { public void init() { String zahl = "A4"; int x; try { x = Integer.parseInt(zahl); } catch (NumberFormatException ex) { add("North", new Label(zahl + " ist keine Zahl")); add("South", new Label("Fehler: " + ex)); } } } |
Das Programm versucht, einen String in eine int-Zahl zu konvertieren. Voraussetzung ist, daß der String eine Zahl enthält, z.B. "4" oder "532".
In diesem Fall ist aber ein Buchstabe mit enthalten, der nicht in eine Zahl umgewandelt werden kann. Daher wird ein Exception ausgelöst. In dem Programm wurde vorsichtshalber eine try-catch-Anweisung eingebaut, die bei catch diese NumberFormatException auffängt.
weiter:![]() zurück: ![]() |
![]() ![]() |
![]() |
© 1999-2001 ![]() |