Fehler in Programmen
In jedem Programm können Fehler auftreten. Wenn wir gerade erst programmieren gelernt haben, dann treten zum Beispiel manchmal Syntaxfehler auf. Syntaxfehler treten immer auf, wenn wir das Programm nicht entsprechend den Grammatikregeln der Python Programmiersprache schreiben. Ein Beispiel eines Syntaxfehlers findet sich in folgendem Code:
def f(a):
if a < 3
print("a ist kleiner 3")
else
print("a ist grösser oder gleich 3")
Direkt wenn wir das Programm ausführen wollen, wird der folgende Fehler ausgegeben:
File "/tmp/sessions/c12fb9ad1be76a5f/main.py", line 2
if a < 3
^
SyntaxError: invalid syntax
Python versucht die if-Anweisung zu interpretieren, wird aber durch den fehlenden
:
am Ende der Anweisung verwirrt.
Mit zunehmender Programmierpraxis unterlaufen uns solche syntaktischen Fehler immer seltener. Jedoch werden wir nie ganz vermeiden können, dass wir Denkfehler machen und entsprechend das Programm einer falschen Logik folgt. Aber sogar, wenn wir korrekte Programme schreiben, können Fehler auftreten. Schauen Sie sich zum Beispiel folgenden Code an, der eine Text aus einer Datei liest.
f = open("myFile.txt", "r")
content = f.read()
f.close()
Das Programm ist syntaktisch und logisch korrekt. Wenn jedoch die Datei myFile.txt
gar nicht existiert, kann Python diese nicht öffnen. Es wird dann zur Laufzeit des Programms ein Fehler auftrete.
Wenn Python versucht die open
Anweisung auszuführen, wird folgende Fehlermeldung ausgegeben:
Traceback (most recent call last):
File "/tmp/sessions/a7c54ce0c0a87be4/main.py", line 1, in <module>
f = open("myFile.txt", "r")
FileNotFoundError: [Errno 2] No such file or directory: 'myFile.txt'
Im selben Code könnten auch noch weitere Fehler auftreten. Zum Beispiel könnte die Datei fehlerhaft sein. Dies würde zu einem Fehler in der read
Methode führen, da die Daten nicht korrekt gelesen werden können. Auch hier würde Python mit einer Fehlermeldung das Programm abbrechen.
Ein weiteres Beispiel von einem möglichen Fehler ist in folgendem Code illustriert:
def div(a, b):
return a / b
Dieses Programm soll die zwei als Argumente übergebenen Zahlen dividieren. Ein Fehlersituation würde auftreten, wenn wir die Funktion beispielsweise mit div(5, 0)
aufrufen würden. Die entsprechende Fehlermeldung ist
/main.py", line 2, in div
return a / b
ZeroDivisionError: division by zero
In all diesen Fällen bricht Python also einfach die Ausführung des Programms ab. Für unsere kleinen Programme ist dies eine akzeptable Strategie. Sobald wir aber grössere, professionelle Programme schreiben, müssen wir aber Wege finden um auf solche Fehlersituationen entsprechend reagieren zu können.
Fehlerbehandlung gehört zu den oft vernachlässigten, aber sehr wichtigen Aufgaben beim Programmieren. Nur wenn wir adäquat auf auftretende Fehler im Programm reagieren, werden die von uns geschriebenen Programme in der Praxis nützlich sein.
Sie möchten ja auch nicht, dass ihr Webbrowser einfach abstürzt, nur weil Sie sich beim eingeben der URL einer Website vertippt haben oder wenn gerade keine Internetverbindung existiert.
Fragen und Kommentare
Haben Sie Fragen oder Kommentare zu diesem Artikel? Nutzen Sie das Forum und helfen Sie sich und Ihren Mitstudierenden dieses Thema besser zu verstehen.