Seite 1 von 1

except / KeyboardInterrupt und EOFError

Verfasst: Montag 4. Mai 2009, 21:49
von Kiney
Moin,

eine Sache habe ich an Exception-Handling irgendwie nicht ganz verstanden.
Hier mal ein minimal-Beispiel:

Code: Alles auswählen

while True:
    try:
        print input(': ')
    except KeyboardInterrupt:
        print 'quit!'
        quit()
    except: pass
(Das Programm erfüllt so natürlich keine wirkliche Funktion, aber es zeigt den Fehler schön)
Wenn ich dieses Programm ausführe wird beim drücken von str+c (KeyboardInterrupt) das Programm, wie geplant, abgebrochen und "quit!" auf dem Bildschirm ausdrücke.
Alle anderen Fehler führen zu nichts.
Aber:
Wenn ich einen EOFError auslöse (str+d drücken), dann passiert zwar erst auch "nichts", aber danach "funktioniert" das abfangen von KeyboardInterrupt nicht mehr.
Das Programm bricht mit einer Python-Fehlermeldung ab.
Kann mir jemand erklären warum das so ist?

Schöne Grüße,
Jannik

Edit:
ich verwende Python version 2.5.2 unter Linux

Verfasst: Montag 4. Mai 2009, 21:54
von Rebecca

Verfasst: Montag 4. Mai 2009, 22:09
von Kiney
Oh, danke für die schnelle Antwort.
Das erklärt natürlich einiges.

Gruß,
Jannik

Verfasst: Dienstag 5. Mai 2009, 11:37
von derdon
Mit Python 2.x solltest du raw_input statt input verwenden, um nicht evil zu sein.