Skip to main content

Fehler in Programmen

In jedem Programm, welches wir programmieren 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 ist im folgenden Code gegeben:

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 Fehler immer seltener. Aber auch wenn wir ein korrektes Programm schreiben, können Fehler auftreten. Schauen Sie sich zum Beispiel folgenden Code zum lesen eines Texts auf einer Datei an.

f = open("myFile.txt", "r")
content = f.read()
f.close()

Das Programm ist syntaktisch korrekt. Wenn jedoch die Datei myFile.txt gar nicht existiert, kann Python diese nicht öffnen. Es wird dann zur Laufzeit des Programms, nämlich dann, wenn die Anweisung open ausgeführt 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, was zu einem Fehler in der read Methode führen würde, da die Daten nicht korrekt gelesen werden könnte. 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 grössere und professionellere 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.