Definition „Ausnahmebehandlung“

Was ist Exception Handling?

| Autor / Redakteur: Gedeon Rauch / Stephan Augsten

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: geralt - Pixabay.com / CC0)

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.

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.

Kommentare werden geladen....

Kommentar zu diesem Artikel

Der Kommentar wird durch einen Redakteur geprüft und in Kürze freigeschaltet.

Anonym mitdiskutieren oder einloggen Anmelden

Avatar
Zur Wahrung unserer Interessen speichern wir zusätzlich zu den o.g. Informationen die IP-Adresse. Dies dient ausschließlich dem Zweck, dass Sie als Urheber des Kommentars identifiziert werden können. Rechtliche Grundlage ist die Wahrung berechtigter Interessen gem. Art 6 Abs 1 lit. f) DSGVO.
  1. Avatar
    Avatar
    Bearbeitet von am
    Bearbeitet von am
    1. Avatar
      Avatar
      Bearbeitet von am
      Bearbeitet von am

Kommentare werden geladen....

Kommentar melden

Melden Sie diesen Kommentar, wenn dieser nicht den Richtlinien entspricht.

Kommentar Freigeben

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

Freigabe entfernen

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

Aktuelle Beiträge zu diesem Thema

Development Testing – denn Softwarequalität geht vor

Qualitätssicherung

Development Testing – denn Softwarequalität geht vor

Angesichts immer komplexerer Systeme sind heute Code-Analyse und Software-Tests bereits während der Produktentwicklung erforderlich. Das Stichwort heißt Development Testing. lesen

Von Enterprise-Distribution bis zur DevOps-Express Initiative

Jenkins World 2016: Neues bei Cloudbees

Von Enterprise-Distribution bis zur DevOps-Express Initiative

Cloudbees bietet Jenkins nun zertifiziert als „Jenkins Enterprise Distribution“ an, mehr Unterstützung für die Visualisierung im Software-Delivery und stößt die Gründung einer „DevOps-Express“-Initialtive für den ganz schnellen und Best-Practice-Einstieg in DevOps. lesen

copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Infos finden Sie unter www.mycontentfactory.de (ID: 45603612 / Definitionen)