Exceptions in Java

2,301 views

Published on

Eine Präsentation über Java-Exceptions-Handling ab Java 1.5. (made for K12-students)

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,301
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
25
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Exceptions in Java

  1. 1. EXCEPTIONS IN JAVA Die Behandlung von Ausnahmefehlern in Java 5.0 1 » von Michael Whittaker | www.michael-whittaker.de
  2. 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. 3. Exceptions in Java | Michael Whittaker | www.michael-whittaker.de I. FEHLER IN PROGRAMMEN • Wieso Exceptions? / Vorteile • Was sind Exceptions?
  4. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 16. III. EXCEPTIONKLASSEN UND –TYPEN » EXCEPTIONTYPEN (EIGTL.: THROWABLE-SUBTYPEN) Exceptions in Java | Michael Whittaker | www.michael-whittaker.de 16
  17. 17. Exceptions in Java | Michael Whittaker | www.michael-whittaker.de IV. VERSTÄNDNISFRAGEN / ÜBUNGEN
  18. 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. 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. 20. Exceptions in Java | Michael Whittaker | www.michael-whittaker.de V. WEBLINKS UND LITERATUR
  21. 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. 22. DANKE FÜR DIE AUFMERKSAMKEIT! » Michael Whittaker | www.michael-whittaker.de

×