Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Exceptions in Java
1. EXCEPTIONS IN JAVA
Die Behandlung von Ausnahmefehlern
in Java 5.0
1
» von Michael Whittaker | www.michael-whittaker.de
2. THEMENÜBERBLICK
I. Fehler in Programmen
• Handling von Fehlern
• Wieso Exceptions? / Vorteile
Exceptions in Java | Michael Whittaker | www.michael-whittaker.de
• Was sind Exceptions?
II. Werfen und Abfangen von Exceptions
• Werfen (throw)
• gezieltes Abfangen
• „Fang alles!“
• TCFTC
• Dokumentation von Exceptions (@throws)
III. Exceptionklassen und -typen
• eigene Exceptions für eigene Methoden
• Laufzeit-Exceptions (RuntimeException), Fehler (Error)
IV. Verständnisfragen und Übungen
V. Weblinks und Literatur 2
3. Exceptions in Java | Michael Whittaker | www.michael-whittaker.de
I. FEHLER IN PROGRAMMEN
• Wieso Exceptions? / Vorteile
• Was sind Exceptions?
4. I. FEHLER IN PROGRAMMEN » HANDLING
alte Methode:
Exceptions in Java | Michael Whittaker | www.michael-whittaker.de
public Integer positivMultiply(Integer faktor1, Integer faktor2) {
if((faktor1>0 & faktor2<0) || (faktor1<0 & faktor2>0)) {
System.out.println("Fehler: 1 Faktor ist negativ!");
return -1; // -1 ist Fehlerrückgabe
} else {
return faktor1*faktor2;
}
}
4
5. I. FEHLER IN PROGRAMMEN » WAS SIND EXCEPTIONS?
WIESO EXCEPTIONS?
„Eine Ausnahme oder Exception ist ein Ereignis, das zur
Laufzeit eines Programms eintritt und den normalen
Exceptions in Java | Michael Whittaker | www.michael-whittaker.de
Kontrollfluss unterbricht.“
zum Kontrollieren von Fehlern wie z. B. den ungültigen
Faktoren im Beispiel
Fehler sind Probleme, die auftreten, nicht behoben
werden können und um die sich „jemand“ kümmern
muss
mit Exceptions werden Code und Fehler(behandlung)
sauber getrennt; Rückgabewerte nur für Ergebnisse
5
6. I. FEHLER IN PROGRAMMEN » WAS SIND EXCEPTIONS?
sind Objekte (Typ: Exception und Unterklassen)
Exceptions in Java | Michael Whittaker | www.michael-whittaker.de
werden mit new erzeugt.
werden mit throw geworfen
Klasse (=Typ) ist wichtigste Information
Java hat schon viele Exceptionklassen
eigene können aber erstellt werden
Exceptions werden nicht in fehlergenerierender
Methode, sondern z. B. im Aufrufer behandelt
6
7. Exceptions in Java | Michael Whittaker | www.michael-whittaker.de
II. WERFEN UND ABFANGEN VON
EXCEPTIONS
• Werfen (throw)
• gezieltes Abfangen
• „Fang alles!“
• TCFTC
• Dokumentation von Exceptions (@throws)
8. II. WERFEN UND ABFANGEN VON EXCEPTIONS
» WERFEN
public Integer positivMultiply(Integer faktor1, Integer
faktor2) throws IllegalArgumentException {
Exceptions in Java | Michael Whittaker | www.michael-whittaker.de
if((faktor1>0 & faktor2<0)
|| (faktor1<0 & faktor2>0)) {
throw new IllegalArgumentException();
} else {
return faktor1*faktor2;
}
}
Alternative - Exception mit Stringargument im Konstruktor:
8
throw new IllegalArgumentException("faktor 1: "+faktor1+" //
faktor2: "+faktor2);
9. II. WERFEN UND ABFANGEN VON EXCEPTIONS
» GEZIELTES ABFANGEN
durch Dokumentation ist bekannt:
positivMultiply wirft IllegalArgumentException
Exceptions in Java | Michael Whittaker | www.michael-whittaker.de
Fehler muss beim Aufruf behandelt werden:
try {
System.out.println(test.positivMultiply(2, -3));
} catch (IllegalArgumentException e) {
System.err.println("Einer der Faktoren war negativ!");
} // System.err.println(e.getMessage());
Der „Versuch“ den Code auszuführen.
Eine IllegalArgumentException wird gefangen (ge-“catch“-t)
9
und der Fehler auf der Konsole ausgegeben!
N.B.: System.err ist die Fehlerkonsole
(in unserem Fall gleich mit System.out!)
10. II. WERFEN UND ABFANGEN VON EXCEPTIONS
» FANG ALLES!
Exceptions in Java | Michael Whittaker | www.michael-whittaker.de
Bild: aus dem Galileo OpenBook „Java ist auch eine Insel“ von C. Ullenboom; ISBN 978-3-89842-747-0
10
11. II. WERFEN UND ABFANGEN VON EXCEPTIONS
» FANG ALLES!
im Vorherigen Beispiel wurde explizit die
IllegalArgumentException gefangen.
Exceptions in Java | Michael Whittaker | www.michael-whittaker.de
Jede Exception ist Unterklasse von Exception, daher
möglich:
try {
probiereJenes();
} catch (IllegalArgumentException e) {
System.err.println("Ungültige Argumente!");
} catch (AnotherSpecialException e) {
System.err.println("Eine andere bestimmte Ausnahme!");
} catch (Exception e) { // fängt "alles" was über bleibt.
System.err.println("Eine noch nicht genannte
Exception!");
} 11
Auf Reihenfolge achten! „Catch-All“ erst am Ende, sonst Compiler-Fehler!
12. II. WERFEN UND ABFANGEN VON EXCEPTIONS
» TRY/CATCH/FINALLY/TRY/CATCH
Soll trotz einer evtl. Exception trotzdem noch etwas ausgeführt
werden (zum Schluss = finally), benutzt man ein finally-Block
(hier aber u. U. auch try/catch):
Exceptions in Java | Michael Whittaker | www.michael-whittaker.de
try {
datei = dateiOeffnen(); datei.zeilenZeigen(); datei.dateiAendern();
} catch (FileNotFoundException e) {
System.err.println("Datei gibt's nicht!“);
} catch (IOException e) {
System.err.println("Schreib- Leseprobleme!“);
} finally {
if (datei != null) {
try {
datei.schließen();
} catch (IOException e) {
e.printStackTrace();
} 12
}
}
13. II. WERFEN UND ABFANGEN VON EXCEPTIONS
» DOKUMENTATION VON EXCEPTIONS (@THROWS)
Benutzer/Programmierer muss Exceptions catchen, daher
Dokumentation wichtig:
Exceptions in Java | Michael Whittaker | www.michael-whittaker.de
/**
* Multipliziert zwei Ganzzahlen - muss dabei
* ein positives Ergebnis liefern
*
* @param faktor1 der erste Faktor
* @param faktor2 der zweite Faktor
* @throws <code>IllegalArgumentException</code>
* @return positives Produkt der beiden
Ganzzahlen
*/
public Integer positivMultiply(Integer faktor1,
Integer faktor2) throws IllegalArgumentException 13
{…}
14. Exceptions in Java | Michael Whittaker | www.michael-whittaker.de
III. EXCEPTIONKLASSEN UND -TYPEN
• eigene Exceptions für eigene Methoden
• Laufzeit-Exceptions (RuntimeException), Fehler (Error)
15. III. EXCEPTIONKLASSEN UND –TYPEN
» EIGENE EXCEPTIONS
Es können neben den in Java enthaltenen Exceptions auch
eigene Exceptions kreiert werden. Bedingungen:
Exceptions in Java | Michael Whittaker | www.michael-whittaker.de
Unterklasse von Exception ( extends Exception) oder
anderer Exception
sollte public sein
public class EinFaktorIstNegativException
extends IllegalArgumentException {
public EinFaktorIstNegativException() {
super();
}
public EinFaktorIstNegativException(String msg) {
super(msg); optional!
}
15
}
16. III. EXCEPTIONKLASSEN UND –TYPEN
» EXCEPTIONTYPEN (EIGTL.: THROWABLE-SUBTYPEN)
Exceptions in Java | Michael Whittaker | www.michael-whittaker.de
16
17. Exceptions in Java | Michael Whittaker | www.michael-whittaker.de
IV. VERSTÄNDNISFRAGEN / ÜBUNGEN
18. IV. VERSTÄNDNISFRAGEN UND ÜBUNGEN
Gültig?
try {
Exceptions in Java | Michael Whittaker | www.michael-whittaker.de
tuWas();
} finally {
tuSchließlichDas();
}
Welche Exceptions können hiermit abgefangen werden?
Ist die Möglichkeit sinnvoll?
catch (Exception e) {
...
18
}
19. IV. VERSTÄNDNISFRAGEN UND ÜBUNGEN (FORTS.)
Ist folgender Code richtig? Kann man es kompilieren?
try {
Exceptions in Java | Michael Whittaker | www.michael-whittaker.de
...
} catch (Exception e) {
...
} catch (ArithmeticException a) {
...
}
Eigenarbeit:
Füge der Potenzmethode (eigene) Exceptions hinzu!
19
( Übrungen s. Server im Ordner Java_Exceptions)
20. Exceptions in Java | Michael Whittaker | www.michael-whittaker.de
V. WEBLINKS UND LITERATUR
21. V. WEBLINKS UND LITERATUR
Vorlesungsfolien: http://www.infosun.fmi.uni-
passau.de/st/edu/pdp01/exceptions.pdf
Exceptions in Java | Michael Whittaker | www.michael-whittaker.de
The Java™ Tutorials: Essential Classes > Lesson: Exceptions:
http://java.sun.com/docs/books/tutorial/essential/exceptions/
„Java ist auch eine Insel“ von C. Ullenboom; Verlag: Galileo
Computing; ISBN: 978-3-89842-838-5; € 49,90
“Robust Java: Exception Handling, Testing, and Debugging” von
21
Stephen Stelting; Verlag: Prentice Hall PTR; ISBN: 0131008528
22. DANKE FÜR DIE AUFMERKSAMKEIT!
» Michael Whittaker | www.michael-whittaker.de