Java -- (Un)Checked Exceptions

10.899 Aufrufe

Veröffentlicht am

Was der Unterschied zwischen checked und unchecked Exceptions in Java ist -- und was das wiederum für uns Programmierer bedeutet

Veröffentlicht in: Technologie
0 Kommentare
1 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

Keine Downloads
Aufrufe
Aufrufe insgesamt
10.899
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
100
Aktionen
Geteilt
0
Downloads
0
Kommentare
0
Gefällt mir
1
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Java -- (Un)Checked Exceptions

  1. 1. Exceptions in Java Die Frage, die uns alle beschäftigt: Warum man wann was für Exceptions wirft, und: Wieso wieder Fehler kommen, wenn man bestimmte Funktionen nutzt und keine Exceptions fängt.
  2. 2. Die zwei wichtigsten Arten von Exceptions <ul><li>Checked Exeptions </li></ul><ul><ul><li>erben (indirekt) von Exception </li></ul></ul><ul><li>Unchecked Exeptions </li></ul><ul><ul><li>erben (indirekt) von RuntimeException </li></ul></ul><ul><li>Merke Java unterscheidet also von sich aus zwischen diesen beiden Typen – obwohl RuntimeException selbst von Exception erbt! </li></ul>
  3. 3. Unchecked Exceptions <ul><li>Vererben alle von RuntimeException </li></ul><ul><li>Haben Programmierer am häufigsten mit zu tun </li></ul><ul><li>Fehler in der Programmlogik </li></ul><ul><ul><li>Kann man zur Laufzeit nicht beheben </li></ul></ul><ul><ul><li>Sind im Prinzip oft Bugs </li></ul></ul><ul><ul><ul><li>Müssen vom Programmierer behoben werden </li></ul></ul></ul><ul><ul><ul><li>Benutzer kann nichts unternehmen </li></ul></ul></ul>
  4. 4. Unchecked Exceptions – Beispiele <ul><li>Falsche Parameterwerte an Funktionen übergeben </li></ul><ul><ul><li>IllegalArgumentException(&quot;Breite negativ&quot;) </li></ul></ul><ul><ul><li>NullPointerException(&quot;Zieldatei ist null&quot;) speziell auch beim Übergeben von null , wo es nicht erlaubt ist </li></ul></ul><ul><li>Meist Fehler, die vom Programmierer ausgehen </li></ul>
  5. 5. Checked Exceptions <ul><li>Müssen behandelt werden </li></ul><ul><ul><li>Mit catch abfangen </li></ul></ul><ul><ul><li>„ Weiterleiten“ an aufrufende/übergeordnete Methode </li></ul></ul><ul><ul><ul><li>Die muss dann auch weiterleiten oder catch e n </li></ul></ul></ul><ul><ul><ul><li>Folgt zu throws PiPaPoException hinter Methoden: </li></ul></ul></ul><ul><ul><ul><ul><li>public void a() throws PiPaPoException {} </li></ul></ul></ul></ul><ul><li>Zumeist Fehler vom Benutzer (Dateien, ...) </li></ul><ul><li>Programm kann sich wieder erholen und muss nicht beenden </li></ul>
  6. 6. Checked Exceptions – mehr heilender Tiefgang <ul><li>Heilung möglich: Beeinflussen nicht die Funktionalität des Programms, würden aber Fehler verursachen, wenn man so weitermacht </li></ul><ul><ul><li>Fehlerhafte Benutzereingaben (Werteübergabe) </li></ul></ul><ul><ul><ul><li>Eingabe kann noch mal korrigierend vorgenommen werden </li></ul></ul></ul><ul><ul><ul><li>Falscheingabe -> Fehlermeldung -> Korrektur -> ... </li></ul></ul></ul><ul><ul><li>Durch throw unterbrochener Programmfluss sollte abgebrochen oder ggf. neu begonnen werden </li></ul></ul><ul><li>Zu benutzen, wenn man gern Fehlerhandling forcieren möchte, also das das Program &quot;heilt&quot; </li></ul>
  7. 7. Checked Exceptions – Beispiele <ul><li>Fehlerhafte Benutzereingaben </li></ul><ul><ul><li>FileNotFoundException wenn z.B. ein Dateiname fehlerhaft ist – Benutzer muss das korrigieren </li></ul></ul><ul><ul><li>IOException (auch erweitert durch FileNotFoundException ) wenn Dateistreams nicht offen sind, Zugriffsrechte fehlen, ... </li></ul></ul><ul><li>Am typischsten sind Fehler mit Dateien </li></ul>
  8. 8. Einfache Orientierungsideen <ul><li>Checked Exceptions nutzen, wenn das Programm den Fehler korrigieren soll und weiterarbeiten muss </li></ul><ul><ul><li>Nicht nur zum »fangen und beenden« benutzen! </li></ul></ul><ul><ul><li>Bei Benutzereingaben </li></ul></ul><ul><ul><ul><li>Benutzer benachrichtigen </li></ul></ul></ul><ul><ul><ul><li>Korrektur anbieten oder abbrechen (er wird’s wohl selbst noch einmal versuchen) </li></ul></ul></ul><ul><li>Unchecked Exceptions für Fehler in der Programmlogik verwenden ( Bughandling ) </li></ul><ul><ul><li>Oft falsche Parameter, da Programmverschuldet </li></ul></ul><ul><ul><ul><li>Benutzereingaben vorher prüfen , nicht blind nehmen </li></ul></ul></ul>

×