Exceptions Exceptions werfen

Werbung
29.01.2013
Vorlesung „Programmieren“
Exceptions
Dr. Dennis Pfisterer
Institut für Telematik, Universität zu Lübeck
http://www.itm.uni-luebeck.de/people/pfisterer
Exceptions
• Wichtige Eigenschaft von Programmen: Fehlerbehandlung
–
–
–
–
Eingabefehler des Benutzers
Fehler beim Lesen oder Schreiben von Dateien (Datei existiert nicht, keine Rechte, ...)
Netzwerkressourcen (z.B. WLAN-Verbindung unterbrochen)
...
• Fehlerbehandlung in Java durch Konzept der Exceptions
– Exceptions sind Klassen, die Fehlerinformationen transportieren
– Werden im Code „geworfen“ (ausgelöst) und müssen an anderer Stelle „gefangen“
(behandelt) werden
– Programm wird nach Behandlung einer Exception normal fortgesetzt
– http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html
5-3-2
Exceptions werfen
• Werfen einer Instanz der Klasse Throwable
– Gilt natürlich auch für alle Subklassen
– Wichtige Unterklasse von Throwable: Exception
• Schlüsselwort: throw
– Wird zum Werfen einer Instanz verwendet
• Beispiele
– Exception e = new Exception(”Fehler”);
throw e;
– throw new Exception("Fehler");
5-3-3
1
29.01.2013
Exceptions werfen: Deklaration
• Methoden, die Exceptions werfen, müssen dies in
der Signatur deklarieren
– Deklaration: Schlüsselwort throws
– Beispiel: void f() throws Exception {...}
– Ausnahme: bestimmte Exceptions (siehe später)
• Exceptions müssen auch deklariert werden, wenn
Methoden aufgerufen werden, die Exceptions
werfen
– Ausnahme: Exception wird „gefangen“ (siehe später)
Beispiel: throws und throw
5-3-5
Klassenhierarchie von Exceptions
•
Oberklasse: Throwable
Throwable
– Exception: Kann sinnvoll behandelt werden,
Programm kann danach weiterlaufen
– RuntimeException: Sollte normal nicht
auftreten, sollte aber behandelt werden können
– Error: Programm kann Ausnahme nicht
behandeln normal Programmabbruch
•
Error
Runtime
Exception
Exception
IOException
ClassNotFoundException
Unterscheidung
– Exceptions müssen vom Programm abgefangen
werden
– Errors & RuntimeExceptions können immer
auftreten, müssen aber nicht explizit behandelt
werden (kein throws notwendig)
NullPointerException
ClassCastException
IndexOutOfBoundsException
2
29.01.2013
Klasse Exception
• Dokumentation
– http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html
• Viele Subklassen
Fangen von Exceptions
• Exceptions können/müssen gefangen werden
– Schlüsselwörter: try und catch
Exceptions weiterreichen
• Alternative zum Fangen: „weiterwerfen“
– Standardverhalten: Exceptions weiterreichen, bis sie behandelt werden
– Müssen dann von der aktuellen Methode deklariert werden
• Guter Stil
– Exceptions so früh wie möglich und sinnvoll behandeln
– Nur weiterwerfen wenn lokale Fehlerbehandlung nicht sinnvoll ist
5-3-9
3
29.01.2013
Exceptions „weiterwerfen“
Beispiel: Obstkorb
4
Herunterladen