Logo des digitalen Schulbuchs inf-schule.de. Schriftzug in Zustandsübergangsdiagramm eines endlichen Automaten.

Exkurs - Fehlerbehandlung

Laufzeitfehler

Beim Programm Anhalteweg eines Autos wird erwartet, dass der Benutzer eine (sinnvolle) Zahl als Geschwindigkeit eingibt und nicht sonst eine (noch so sinnvolle) Zeichenkette.

Anwendungsfenster

Wenn er das nicht macht, dann bricht das Programm mit einer Fehlermeldung seine Ausführung ab.

>>> 
Exception in tkinter callback
Traceback (most recent call last):
  File ...
    return self.func(*args)
  File ... in Button_Berechnen_Click
    geschwindigkeit = float(entryGeschwindigkeit.get())
ValueError: invalid literal for float(): gering

Aufgabe 1

Die Fehlermeldung liefert einen Hinweis, warum es hier zum Programmabbruch kommt. Erkläre die Ursache für den Programmabbruch.

Aufgabe 2

Der folgende Quelltextauszug zeigt, wie man einen Programmabbruch durch Laufzeitfehler vermeiden kann. Kannst du durch Analyse des Quelltextes erschließen, wie das System bei nicht beabsichtigten Eingaben reagiert? Überprüfe deine Vermutung.

def Button_Berechnen_Click():    
    try:
        # Übernahme der Daten
        geschwindigkeit = float(entryGeschwindigkeit.get())
        # Verarbeitung der Daten
        reaktionsweg = (geschwindigkeit/10)*3
        bremsweg = (geschwindigkeit/10) * (geschwindigkeit/10)
        anhalteweg = reaktionsweg + bremsweg    
        # Anzeige der Daten
        anzeigeReaktionsweg = '%.2f'%(reaktionsweg)
        labelWertReaktionsweg.config(text=anzeigeReaktionsweg)
        anzeigeBremsweg = '%.2f'%(bremsweg)
        labelWertBremsweg.config(text=anzeigeBremsweg)
        anzeigeAnhalteweg = '%.2f'%(anhalteweg)
        labelWertAnhalteweg.config(text=anzeigeAnhalteweg)
    except:
        entryGeschwindigkeit.delete(0, END)

Behandlung von Laufzeitfehlern

Laufzeitfehler sind Fehlersituationen, die während der Ausführung eines Programms auftreten.

Beispiele für Laufzeitfehler:

Laufzeitfehler führen in der Regel zu Programmabbrüchen. Solche Programmabbrüche sind nicht nur unangenehm, sie können ganze Systeme lahmlegen und so für Katastrophen unterschiedlichen Ausmaßes sorgen.

Systeme sollten so konzipiert und realisiert werden, dass sie auch bei fehlerhaften Situationen sinnvoll weiterarbeiten.

Insbesondere sollten Systeme mit einer grafischen Benutzungsoberflächen so fehlertolerant sein, dass keine Benutzeraktion zu einem Absturz des Systems führt.

X

Fehler melden

X

Suche