Sie sind auf Seite 1von 22

EXCEPTIONS IN JAVA

Die Behandlung von Ausnahmefehlern


in Java 5.0

1
» von Michael Whittaker | www.michael-whittaker.de
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
Exceptions in Java | Michael Whittaker | www.michael-whittaker.de
I. FEHLER IN PROGRAMMEN
• Wieso Exceptions? / Vorteile
• Was sind Exceptions?
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
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
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
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)
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);
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!)
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
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!


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
}
}
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
{…}
Exceptions in Java | Michael Whittaker | www.michael-whittaker.de
III. EXCEPTIONKLASSEN UND -TYPEN
• eigene Exceptions für eigene Methoden
• Laufzeit-Exceptions (RuntimeException), Fehler (Error)
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
}
III. EXCEPTIONKLASSEN UND –TYPEN
» EXCEPTIONTYPEN (EIGTL.: THROWABLE-SUBTYPEN)

Exceptions in Java | Michael Whittaker | www.michael-whittaker.de


16
Exceptions in Java | Michael Whittaker | www.michael-whittaker.de
IV. VERSTÄNDNISFRAGEN / ÜBUNGEN
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
}
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)
Exceptions in Java | Michael Whittaker | www.michael-whittaker.de
V. WEBLINKS UND LITERATUR
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
DANKE FÜR DIE AUFMERKSAMKEIT!

» Michael Whittaker | www.michael-whittaker.de

Das könnte Ihnen auch gefallen