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.
Ich haette gedacht, dass ich dieses Programm jetzt mit Ctrl-D und Ctrl-C nicht mehr abbrechen koennen sollte. Aber sobald ein Ctrl-C auf ein Ctrl-D folgt gibts das hier:
Wenn ich mich richtig erinnere fängt ein reines ``except`` nur Exceptions ab. Aber KeyboardInterrupt erbt nicht von ``Exception``, sondern nur von ``BaseException``.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Das merkwuerdige: Wenn ich das Programm starte und Ctrl-C druecke, gehts. Wenn ich das Programm starte und Ctrl-D druecke, gehts. Wenn ich das Programm starte und Ctrl-C und danach (im nachsten Schleifen-Durchlauf) Ctrl-D druecke, gehts. Nur wenn ich ein Ctrl-C nach einem Ctrl-D druecke, sehe ich die Exception.
Und die Variante, statt einem allgemeinen except ein except (KeyboardInterrupt, EOFError) zu schreiben, tut das gleiche.
Rebecca hat geschrieben:Das merkwuerdige: Wenn ich das Programm starte und Ctrl-C druecke, gehts. Wenn ich das Programm starte und Ctrl-D druecke, gehts. Wenn ich das Programm starte und Ctrl-C und danach (im nachsten Schleifen-Durchlauf) Ctrl-D druecke, gehts. Nur wenn ich ein Ctrl-C nach einem Ctrl-D druecke, sehe ich die Exception.
Und die Variante, statt einem allgemeinen except ein except (KeyboardInterrupt, EOFError) zu schreiben, tut das gleiche.
Ich kann den Bug bei mir nicht nachvollziehen. Habe das Skript unter WindowsXP ausprobiert, allerdings nur KeyboardInterrupt abgefangen.
Keine der genannten Tastenkombos warf ne Exception...
EDIT: OK, das EOFError brauch ich auch, aber dann bekomme ich auch keine Exception...
Unter Windows ist Strg-D auch Strg-Z ─ das ist das Signal an das Terminal bzw. die Eingabeaufforderung die Verbindung zur Standardeingabe des Programms zu schliessen.
Jo, ich weiß aber aber wie gesagt ich bekomme keine Exception ...
Schaffe es nicht das Skript über irgendwelche Tastenkombinationen zu beenden. Ich könnte mir höchstens vorstellen, das eine Shell unter Linux u.U. anders mit dem Signal umgeht.
Ich kann das Verhalten hier unter Gentoo nachvollziehen. Allerdings ändert sich das, sobald man readline importiert. Dann ist das Programm tatsächlich nicht mehr aabzubrechen, es wird keine Exception angezeigt.