Definition „Ausnahmebehandlung“ Was ist Exception Handling?

Autor / Redakteur: Gedeon Rauch / Stephan Augsten

In einigen Fällen werden Programme mit Ausnahmen von den Instruktionen konfrontiert. Entwickler integrieren Exception Handler in den Code, damit nicht jede Abweichung von den Instruktionen sofort zum Fehlercode führt.

Firma zum Thema

Um Fehler beispielweise bei Dateneingaben zu minimieren, lassen viele Programmiersprachen sogenannte Ausnahmebehandlungen zu.
Um Fehler beispielweise bei Dateneingaben zu minimieren, lassen viele Programmiersprachen sogenannte Ausnahmebehandlungen zu.
(Bild gemeinfrei: geralt - Pixabay.com)

Ausnahmen gibt es immer, auch in eigentlich eindeutigen Feldern wie der IT. Bei Computern beziehen diese Ausnahmen (Englisch: exceptions) sich in der Regel auf Fehlerzustände. Solche Ausnahmesituationen werden dann nach der Diagnose weitergereicht, um auf anderen Programmebenen behandelt zu werden.

Die Exception ist damit der Nachfolger des Fehlercodes und sorgt anders als die Fehlercodeausgabe dafür, dass über die Ausnahmesituation der Fehler im Programm gelöst werden kann. Der Code, der für diese Behandlung der Ausnahmesituation sorgt, ist der sogenannte Exception Handler.

Ausnahmen im Programmfluss

Grundsätzlich müssen Exceptions in zwei Untergruppen eingeteilt werden:

  • checked: überprüfte, vorhersehbare Ausnahmefehler
  • unchecked: unerwartete, unvorhersehbare Exceptions

Bei den Checked Exceptions handelt es sich um solche, die im regulären Programmfluss zwar vorkommen können, sich aber jenseits der Programminstruktionen bewegen. Dadurch kann das Exception Handling direkt in der ausnahmeauslösenden Methode implementiert werden oder aber in die aufrufende Methode. Ein Beispiel hierfür ist etwa eine Speicheranforderung, der ein Programm nicht stattgeben kann. Diese lässt sich über Exception Handling gegebenenfalls dennoch bearbeiten, indem sie als Ausnahme einfach weitergereicht wird.

Unvorhersehbare Fehler stören den Programmfluss dagegen außerhalb der Exception Handler und können nicht immer behandelt werden. Abhängig vom Programm und dem codierten Handling ist eine Weiterreichung zwar nicht unmöglich, doch eher die Ausnahme von der Ausnahmebehandlung. Generell wird dazu geraten, den geregelten Programmfluss nach einer Unchecked Exception weiterlaufen zu lassen.

In der Regel greift das Exception Handling, wenn eine verursachende Funktion ein Problem nicht problemlösend verarbeiten kann. In diesem Fall reicht der Code das Problem von Funktion zu Funktion weiter bis die Exception aufgelöst wird.

Wird eine Exception ausgelöst, so generiert der Code in der Regel ein Objekt der Exception-Klasse und verschickt dieses mit "throw" oder "raise" weiter. Für genau diesen gesteuerten Umgang mit Ausnahmen ist jener Teil des Codes zuständig, der Exception Handler genannt wird.

Vorteile des Exception Handling

Aufgrund dieser vielen Vorteile ist das Exception Handlung auch keine Ausnahme bei den Programmiersprachen, sondern wird in den meisten gängigen Sprachen unterstützt. Dazu zählen Java, Python, Visual Basic .NET, sowie C++ und C#. Auch auf Hardware-Ebene ist das Exception Handling möglich. Bestimmte ungültige Operationen können so schnell an den Debugger verwiesen werden oder aber das Programm wird konsequent beendet.

Das Exception Handling steht allerdings auch immer wieder in der Kritik, da es den eigentlichen Fehler im Quellcode nicht behandle. Stattdessen werde der Code durch die Ausnahmeregelung komplizierter und weniger lesbar gemacht.

Zudem sorgen Exceptions häufig dafür, dass die eigentliche Fehlerursache nicht mehr nachvollziehbar ist, da die Ausnahmebehandlung das Problem zwar komplett gelöst, aber das Symptom nicht behandelt hat. Daher ist bei der Programmierung darauf zu achten, dass Exceptions nicht einfach durchgewinkt und weiterverarbeitet werden, sondern ausreichend protokolliert. Nur so lässt sich ein schlanker Programmcode erhalten.

Exception Handler im Code

Manche Programmierer mögen allzu viele Exception Handler durchaus eher als Fluch denn als Segen betrachten, doch im regulären Programmfluss ist es gerade das Exception Handling, das häufig den Unterschied macht. Dass etwas Unvorhergesehenes geschieht, fällt dem User so überhaupt nicht auf, denn schließlich können viele potenzielle Fehlerquellen so einfach auf anderen Programmebenen gemanagt werden.

(ID:45603612)