java.sun.com

   JAVA - Fehlerverarbeitung - Exceptions


 Startseite

 Indexverzeichnis


JAVA - Fehlerverarbeitung - Exceptions

Kurzübersicht
try-catch-finally
Die wichtigste Exceptions
Beispiel

  Seitenende


Kurzübersicht

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: ...".


  Seitenanfang


try-catch-finally

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.


  Seitenanfang


Die wichtigsten Exceptions

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)


  Seitenanfang


Beispiel

BeispielProgrammbeispiel: Ansehen
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:
  Ende
  HTML-Seiten - mit Frames arbeiten
  Seitenanfang © 1999-2001  Brit Schröter