except / KeyboardInterrupt und EOFError

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Kiney
User
Beiträge: 2
Registriert: Montag 4. Mai 2009, 18:19

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
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

Offizielles Python-Tutorial (Deutsche Version)

Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
Kiney
User
Beiträge: 2
Registriert: Montag 4. Mai 2009, 18:19

Oh, danke für die schnelle Antwort.
Das erklärt natürlich einiges.

Gruß,
Jannik
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Mit Python 2.x solltest du raw_input statt input verwenden, um nicht evil zu sein.
Antworten