- Zeichensätze und -kodierung – Anwendungsentwickler-Podcast #32
- HTML – Anwendungsentwickler-Podcast #33
- Java (Lernzielkontrolle) – Anwendungsentwickler-Podcast #36
- Allgemeine Fragen zur Programmierung (Lernzielkontrolle) – Anwendungsentwickler-Podcast #37
- Variablen und Operatoren (Lernzielkontrolle) – Anwendungsentwickler-Podcast #38
- Zahlen und Zeichen (Lernzielkontrolle) – Anwendungsentwickler-Podcast #39
- Algorithmen und Methoden (Lernzielkontrolle) – Anwendungsentwickler-Podcast #42
- Objektorientierung Teil 1 (Lernzielkontrolle) – Anwendungsentwickler-Podcast #43
- Objektorientierung Teil 2 (Lernzielkontrolle) – Anwendungsentwickler-Podcast #44
- Datenbankmodellierung (Lernzielkontrolle zum Entity-Relationship-Modell) – Anwendungsentwickler-Podcast #48
- Datenbankmodellierung (Lernzielkontrolle zum relationalen Tabellenmodell) – Anwendungsentwickler-Podcast #49
- Java EE 7 (Lernzielkontrolle) – Anwendungsentwickler-Podcast #54
- Fehlerbehandlung (Lernzielkontrolle zu Exceptions) – Anwendungsentwickler-Podcast #79
- Arrays und Listen (Lernzielkontrolle) – Anwendungsentwickler-Podcast #99
Eine Lernzielkontrolle zu Exceptions (in Java) gibt es in der neunundsiebzigsten Episode des Anwendungsentwickler-Podcasts.
Podcast: Play in new window | Download (Duration: 41:52 — 19.8MB)
Abonnieren: Apple Podcasts | Spotify | RSS
Inhalt
Exceptions
- Was ist eine „Exception“?
- Eine unerwartete Ausnahmesituation in einem Programm, meistens ein Fehler.
- Oder: Die Klasse, die dieses Konzept in der Programmiersprache repräsentiert.
- Was ist die Analogie zur Erklärung der Behandlung von Exceptions?
- Man „wirft“ und „fängt“ Exceptions wie einen Ball.
- Wie kann man grundsätzlich mit Exceptions umgehen?
- Man kann sie entweder direkt fangen (und das Problem lösen) oder dies an den Aufrufer delegieren (weiterwerfen).
- Wie behandelt man eine Exception in Java?
- Mittels
try
,catch
undfinally
.
- Mittels
- Wann braucht man einen
finally
-Block?- Wenn eine Operation unter allen Umständen nach
try
/catch
ausgeführt werden muss (insb. wenn imcatch
-Block potentiell auch Fehler auftreten können).
- Wenn eine Operation unter allen Umständen nach
- Was ist
try-with-resources
?- Ein Sprachkonstrukt in Java, das dafür sorgt, dass Ressourcen nach ihrer Nutzung sauber wieder geschlossen werden, egal ob eine Exception auftritt oder nicht. Die Ressource muss dafür
java.lang.AutoCloseable
implementieren. Entsprichtusing
in .NET.
- Ein Sprachkonstrukt in Java, das dafür sorgt, dass Ressourcen nach ihrer Nutzung sauber wieder geschlossen werden, egal ob eine Exception auftritt oder nicht. Die Ressource muss dafür
- Was macht das Schlüsselwort
throw
?- Wirft eine Exception.
- Was macht das Schlüsselwort
throws
?- Markiert eine Methode als potentiell fehleranfällig und zwingt den Aufrufer zur Fehlerbehandlung.
- Was ist der Unterschied zwischen „checked“ und „unchecked“ Exceptions?
- Checked Exceptions (die es nur in Java gibt), müssen behandelt werden (der Compiler prüft das). Unchecked Exceptions (z.B. nicht vorhersehbare Laufzeitfehler wie „Speicher voll“) müssen nicht behandelt werden.
- Wie erzeugt man seine eigenen Exceptions?
- Man kann eigene Klassen von
Exception
erben lassen. Diese können dann auch „echte“ Attribute und Methoden beinhalten.
- Man kann eigene Klassen von
- Was ist der „Call Stack“?
- Der Aufrufstack enthält die Rücksprungadressen aller im bisherigen Programmablauf aufgerufenen Methoden. Darüber kann man nachvollziehen, wie das Programm zur aktuellen Position gelangt ist. Jede Exception hat den Call Stack bis zu ihrem Auftreten als Attribut.
- Sollte man Exceptions zur Steuerung des Programmablaufs einsetzen?
- Nein, da Exceptions – z.B. wegen des Call Stacks – recht „teuer“ sind.
- Wie sieht die Hierarchie von Exceptions in Java grob aus?
- Throwable: Basisklasse aller Exceptions in Java.
- Error: „Echte“ Fehler, die ein Programm normalerweise nicht behandeln kann (z.B. StackOverflowError).
- Exception: Fehler, die das Programm behandeln können sollte.
- RuntimeException: Unchecked Exceptions wie z.B. ArithmeticException bei Division durch 0.
- Throwable: Basisklasse aller Exceptions in Java.
- Was sind die Vorteile von Exceptions gegenüber direkter Fehlerbehandlung?
- Produktivcode und Fehlerbehandlungscode werden stärker getrennt.
- Man kann das Behandeln von Fehlern an den Aufrufer delegieren.
- Man kann einfacher zwischen verschiedenen Fehlern unterscheiden.
Literaturempfehlungen
- Die Java-Insel* beschreibt in einem eigenen Kapitel ausführlich den Umgang mit Exceptions in Java (siehe Exceptions).
*
(direkt beim Rheinwerk-Verlag bestellen*) - Und auch Clean Code* enthält ein komplettes Kapitel zum Umgang mit Exceptions und Fehlersituationen.
* - Meine Hörbuch-Empfehlung der Woche: What if?* von Randall Munroe
*
Links
- Permalink zu dieser Podcast-Episode
- RSS-Feed des Podcasts
- Lesson: Exceptions (The Java Tutorials – Essential Classes)
- The try-with-resources Statement (The Java Tutorials – Essential Classes – Exceptions)
- Call stack – Wikipedia, the free encyclopedia
- Exception Hierarchy in Java
- The Truth Behind the Big Exceptions Lie | Java Code Geeks – 2016
Neueste Kommentare