Lernzielkontrolle zu Fehlerbehandlung mit Exceptions

Fehlerbehandlung (Lernzielkontrolle zu Exceptions) – Anwendungsentwickler-Podcast #79

Dieser Beitrag ist Teil 13 von 14 in der Serie Lernzielkontrollen.

Eine Lernzielkontrolle zu Exceptions (in Java) gibt es in der neunundsiebzigsten Episode des Anwendungsentwickler-Podcasts.

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 und finally.
  • Wann braucht man einen finally-Block?
    • Wenn eine Operation unter allen Umständen nach try/catch ausgeführt werden muss (insb. wenn im catch-Block potentiell auch Fehler auftreten können).
  • 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. Entspricht using in .NET.
  • 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.
  • 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?
  • 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

Links

Navigation der Serie<< Java EE 7 (Lernzielkontrolle) – Anwendungsentwickler-Podcast #54Arrays und Listen (Lernzielkontrolle) – Anwendungsentwickler-Podcast #99 >>

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax