Bad Practice: Fehler verschlucken durch Sprungbefehle im finally-Block

04.08.2023

Im Vorgängerartikel habe ich bereits gezeigt, wie bei der Programmiersprache Java eine auftretende Exception im catch- oder finally-Block die ursprüngliche Exception maskieren kann, damit die Fehlersuche sehr erschwert. Im heutigen Artikel geht es um eine ganz ähnliche Situation: Der finally-Block darf auch nicht mit anderen Sprungbefehlen verlassen werden!

Code-Beispiel

Zur einfacheren Darstellung verwenden wir ein konstruiertes Beispiel, welches zwar inhaltlich keinen Sinn macht, aber das Prinzip gut verdeutlicht.

Das Code-Beispiel besteht aus einer Schleife und einem eingeschachelten try-finally. Im finally-Block wird zunächst eine cleanup-Methode aufgerufen, welche zur Simulation von Aufräumarbeiten hier einfach nur „simulating cleanup“ ausgibt. Bei Eintreten einer bestimmten Bedingung erfolgt ein Schleifen-Abbruch mittels break-Statement.

Die Ausgabe sieht wie folgt aus:

Von der Exception ist nichts zu sehen.

Ähnliches passiert bei einem return-Statement im finally-Block:

Auch hier wird die Exception komplett verschluckt:

Glücklicherweise zeigen viele moderne Entwicklungsumgebungen in der Zeile mit dem Sprungbefehl eine entsprechende Warnung an. Sofern man diese Warnungen beachtet und nicht unterdrückt hat, sollte der Fehler mit den Sprung-Befehlen eigentlich nicht passieren.

Exceptions führen natürlich ebenfalls dazu, dass aus dem finally-Block heraus gesprungen wird. Zu diesem Spezialfall sei noch einmal auf den Vorgängerartikel verwiesen, welcher ausführlicher auf diese Situation eingeht und verschiedene Gegenmaßnahmen beleuchtet.

Fazit

Verwende niemals Sprungbefehle im finally-Block! Also kein break, continue, return, throw…

Denn:

  • dies erschwert die Fehlersuche extrem, da wir den aufgetretenen Fehler gar nicht sehen.
  • dies ist gefährlich, da wir eine auftretende Exception dadurch vollkommen ignorieren. Der normale Programmfluss wird fortgesetzt, was schwerwiegende Folgefehler nach sich ziehen kann.

Quellen:


Bildnachweis: Das Titelbild zur Blogserie „Exception Handling“ basiert auf einer Grafik von mohamed_hassan auf Pixabay.

Zurück zur Übersicht

Kommentar verfassen

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

*Pflichtfelder

*