Einführung in Ausnahmesituationen in Python
In diesem Abschnitt werden Ausnahmesituationen in Python betrachtet. Zunächst muss man verstehen, was sie eigentlich darstellen.
Beim Schreiben eines Programms geht der Entwickler implizit davon aus, dass alle verwendeten softwaretechnischen Mechanismen korrekt funktionieren werden.
Dies ist jedoch nicht immer der Fall. Bei der Übertragung von Daten über das Netzwerk kommt es zu Verbindungsabrissen und die Daten kommen bei uns in einer fehlerhaften Form an oder kommen überhaupt nicht an. Beim Schreiben einer Datei stellt sich heraus, dass der für uns reservierte Platz auf der Festplatte aufgebraucht ist und die Datei nicht geschrieben werden kann. Beim Lesen einer Datei stellt sich heraus, dass eine solche Datei nicht existiert und wir von nirgendwoher lesen können. Beim Drucken von Daten auf einem Drucker kommt es zu einem Bruch des Kabels, das den Drucker und den Computer verbindet.
Alle beschriebenen Situationen haben eine gemeinsame Essenz: Es tritt eine Art Fehlfunktion auf, die die Unmöglichkeit oder Sinnlosigkeit des Abschlusses der geplanten Operation zur Folge hat.
Es gibt auch Situationen, in denen ein bestimmter Fehler auftritt, der keine Fehlfunktion ist. Zum Beispiel fragen Sie den Benutzer nach seiner E-Mail-Adresse, und er gibt eine E-Mail-Adresse in einem ungültigen Format ein. Es ist klar, dass unser Programm die E-Mail-Adresse nicht weiter verarbeiten kann, da sie nicht korrekt ist. Dennoch ist dies keine Ausnahmesituation. Unser Programm kann die Situation selbst korrigieren: Es gibt eine Fehlermeldung aus und der Benutzer wiederholt seine Eingabe.
Tatsächlich ist der Unterschied zwischen einer Fehlfunktion und keiner Fehlfunktion sehr verschwommen. Ein Ereignis, das ein Programm als Ausnahmesituation interpretieren kann, kann ein anderes Programm als einen bestimmten Fehler interpretieren, mit dem es umgehen kann.
Das Kriterium hier ist folgendes: Wenn Ihr Programm bei Auftreten eines Problems weiterhin das ausführen kann, wofür es vorgesehen ist, dann ist es keine Ausnahmesituation. Wenn es das nicht kann, dann ja, das ist eine Ausnahme.
Zum Beispiel haben wir ein Programm, das die E-Mail-Adresse des Benutzers abfragen soll. Wenn der Benutzer die E-Mail-Adresse in einem ungültigen Format eingegeben hat - ist das keine Fehlfunktion. Dies ist ein erwartetes Problem und unser Programm wird den Benutzer so oft nach der E-Mail-Adresse fragen, bis er sie korrekt eingibt.
Nehmen wir an, dass unser Programm, das nach der E-Mail-Adresse fragt, diese korrekte E-Mail-Adresse auch über das Internet senden soll. Dabei stellt sich heraus, dass das Internet nicht funktioniert. Das ist schon ein Problem: Das Programm kann auf keine Weise Daten über das Internet senden, wenn das Internet nicht funktioniert. Das Programm kann dennoch seine Ausführung fortsetzen: Es kann Informationen über das Problem ausgeben, den Sendeversuch nach einiger Zeit wiederholen und so weiter. Aber diese Aktionen sind nicht ganz das, wofür das Programm gedacht war, da es die Hauptaktion - das Senden der E-Mail - nicht durchführen kann.
Daraus folgt, dass die Interpretation, welches Verhalten als normal und welches als außergewöhnlich angesehen wird, sehr oft von den Aufgaben abhängt, die vor dem Programmierer stehen.