Zum Inhalt springen
YellowBlue
IT-Grundlagen4 Min. Lesezeit

Fehlerbehandlung mit Exceptions

Kurzantwort

Eine Exception ist ein Ausnahmefehler zur Laufzeit, etwa eine fehlende Datei oder eine Division durch null. Statt das Programm abstürzen zu lassen, fängt man Exceptions mit try-catch ab: Der riskante Code steht im try-Block, die Reaktion im catch-Block, und ein optionaler finally-Block läuft immer. So bleibt das Programm kontrollierbar.

Teil des Lernpfads Programmieren und Softwareentwicklung · Schritt 5 von 18

Eine Datei fehlt, das Netzwerk ist weg, der Nutzer tippt Buchstaben statt Zahlen – solche Fehler lassen sich nicht immer verhindern. Der Unterschied zwischen guter und schlechter Software liegt darin, wie sie damit umgeht. Genau dafür gibt es Exceptions.

Was ist eine Exception?

Eine Exception (Ausnahme) ist ein Fehler zur Laufzeit, der den normalen Programmablauf unterbricht. Wird sie nicht behandelt, stürzt das Programm ab.

Typische Beispiele:

  • Zugriff auf eine nicht vorhandene Datei
  • Division durch null
  • Umwandlung von "abc" in eine Zahl
  • Zugriff auf ein Listenelement, das es nicht gibt

try – catch – finally

Der riskante Code kommt in den try-Block. Tritt dort eine Exception auf, springt das Programm in den catch-Block. Der finally-Block läuft in jedem Fall – ob Fehler oder nicht.

try {
    zahl = leseEingabe()        // könnte fehlschlagen
    ergebnis = 100 / zahl       // Division durch null?
} catch (Fehler e) {
    zeige "Bitte gültige Zahl eingeben"
} finally {
    schließeEingabe()           // läuft immer
}
BlockZweckLäuft wann?
tryriskanter Codeimmer (Einstieg)
catchReaktion auf den Fehlernur bei Exception
finallyAufräumen (z. B. Datei schließen)immer

Nicht jeden Fehler abfangen

Selbstkontrolle

Selbstkontrolle

Wann wird der finally-Block ausgeführt?

Häufige Fragen

Was ist der Unterschied zwischen Fehler und Exception?

Umgangssprachlich meint man oft dasselbe. Genauer: Eine Exception ist ein Objekt, das einen Ausnahmezustand zur Laufzeit beschreibt und das man abfangen kann. Manche Sprachen trennen zusätzlich schwere, meist nicht behandelbare Fehler (etwa zu wenig Speicher) von normalen, behandelbaren Exceptions.

Sollte man alle Exceptions abfangen?

Nein. Man fängt gezielt die ab, auf die man sinnvoll reagieren kann, etwa eine fehlende Datei mit einer Nutzermeldung. Ein pauschales Abfangen aller Fehler verdeckt echte Programmierfehler und erschwert die Fehlersuche. Was man nicht sinnvoll behandeln kann, gibt man bewusst weiter.

Was bedeutet 'eine Exception werfen'?

Wenn ein Programmteil einen Fehlerzustand feststellt, kann er selbst eine Exception auslösen (werfen, throw), die dann weiter oben abgefangen wird. So trennt man das Erkennen eines Problems von seiner Behandlung. Eine eigene, aussagekräftige Exception ist oft klarer als ein kryptischer Rückgabewert.

Was ist der Unterschied zu einer Validierung?

Validierung prüft Eingaben vorab, damit ein Fehler gar nicht erst entsteht, etwa ob ein Feld leer ist. Exceptions greifen, wenn trotz Prüfung zur Laufzeit etwas schiefgeht, das man nicht vollständig ausschließen kann, etwa ein Netzwerkabbruch. Beide ergänzen sich: erst validieren, dann für den Rest Exceptions einsetzen.

Weiterlesen: Compiler vs. Interpreter: Unterschied erklärt · OOP-Grundlagen: Klasse, Objekt, Prinzipien · Softwaretests: von Unit-Test bis Abnahme · Rekursion: wenn sich eine Funktion selbst aufruft

Das Wichtigste in Kürze

  • Eine Exception ist ein Laufzeitfehler, der den Ablauf unterbricht.
  • try = riskanter Code, catch = Reaktion, finally = läuft immer (Aufräumen).
  • Exceptions so konkret wie möglich abfangen, nicht pauschal.
  • Für erwartbare Ausnahmen gedacht – kein Ersatz für saubere Logik.
  • Nicht still verschlucken: unbehandelte Fehler bleiben sonst unbemerkt.

Schlagwörter

Verwandte Beiträge

IT-Grundlagen3 Min. Lesezeit

Rekursion: wenn sich eine Funktion selbst aufruft

Wie Rekursion funktioniert, warum jede rekursive Funktion eine Abbruchbedingung braucht und wann Rekursion sinnvoller ist als eine Schleife.

IT-Grundlagen4 Min. Lesezeit

Sortier- und Suchalgorithmen verstehen

Wie Bubblesort und die binäre Suche funktionieren, warum die lineare Suche langsamer ist und was die O-Notation über die Laufzeit verrät.

IT-Grundlagen3 Min. Lesezeit

Vererbung und Polymorphie in der OOP

Wie Klassen in der OOP Eigenschaften vererben, was Überschreiben bedeutet und wie Polymorphie denselben Aufruf je nach Objekt unterschiedlich wirken lässt.