Michael Altmann Tech Talk

“ Eine Fehlerbehandlung ohne Exceptions? Kaum vorstellbar, oder? Fehler sollten aber nicht immer mit dem Exception-Feature von .NET behandelt werden.“

Eine Fehlerbehandlung ohne Exceptions? Kaum vorstellbar, oder? Dieser Artikel zeigt, dass Fehler nicht immer mit dem Exception-Feature von .NET behandelt werden sollten. Als möglicher zweiter Fehlerbehandlungsmechanismus wird das Result-Pattern vorgestellt, das einige neue Vorteile bringt. Das Result-Pattern soll Exceptions jedoch nicht komplett ersetzen, sondern als sinnvolle Ergänzung in bestimmten Szenarien Anwendung finden.

.NET bietet einen Fehlerbehandlungsmechanismus in Form von Exceptions an. Dabei werden Sprachkonstrukte wie try, catch und finally zur Verfügung gestellt, die die Verwendung von Exceptions für den Programmierer sehr komfortabel machen.

Exceptions sind jedoch eines der Features in .NET, die oft falsch verwendet werden. Daher hat Microsoft Guidelines veröffentlicht, die die empfohlene Verwendung von Exceptions zeigen. Hier ein kleiner Auszug aus den Guidelines:

  • Das Werfen von Exceptions sollte, wie der Name korrekterweise sagt, nur in Ausnahmefällen eingesetzt werden. Wenn zum Beispiel die Suchabfrage keine Treffer liefert, dann ist das kein Ausnahmefall. Eine unerwartete NullReferenceException ist hingegen ein Ausnahmefall.
  • Exceptions sollen nicht in Szenarien eingesetzt werden, um den Programmfluss zu ändern. In diesem Zusammenhang werden Exceptions oft mit GOTO verglichen, was ein Antipattern ist. Wird diese Empfehlung von Microsoft nicht eingehalten, so führt das meist zu unübersichtlichem und schwer verständlichem Code, der die Wartbarkeit erschwert.

Zwei Arten von Fehlern

Die Microsoft-Guidelines zeigen, dass Exceptions nicht in allen Situationen verwendet werden sollen. Es ist daher zwischen unterschiedlichen Fehlerarten zu klassifizieren. Dieser Artikel teilt die Fehler grundsätzlich in zwei Klassen ein: unerwartete Fehler (= Ausnahmefälle) und erwartete Fehler (siehe Kasten „Unterscheidung erwartete/unerwartete Fehler“).

Unerwarteter Fehler

Ein unerwarteter Fehler ist ein in der Anwendung aufgetretener Fehler, der unerwartet aufgetreten ist und mit dem wir nicht umgehen können. Es wurde vergessen oder nicht erkannt, dass der unerwartete Fehler auftreten kann. Im Team bzw. über Anforderungen wurde auch nicht festgelegt, wie solche unerwarteten Fehler behandelt werden sollen. Beispiele für unerwartete Fehler sind unter anderem:

  • Speicherfehler
  • Zugriff auf einen Member einer Instanz, die null ist
  • Code-Contract-Verletzung
  • Konfigurationsdatei ist nicht verfügbar

Ein unerwarteter Fehler tritt also in Situationen auf, die für die Anwendung ungewöhnlich sind. Eine Situation ist aber nicht automatisch ungewöhnlich, nur weil die Situation seltener passiert als andere.

Den vollständigen Artikel lesen Sie in der Ausgabe:

Windows Developer 7.19 - "Potenziale entdecken und nutzen"

Alle Infos zum Heft
579894495Funktionale Fehlerbehandlung nach C# transportiert
X
- Gib Deinen Standort ein -
- or -