ValueError in try-except-Block

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

Hi. Ich habe ein kleines Script geschrieben, welches nur mal schnell Alter, Wochentag des Geburtstages und Dauer bis zum Geburtstag berechnet. Nun ist das ganze ein CGI-Script und dem Script soll ein Datum der Form "year-month-day" übergeben werden. Falls sinnlose Angaben gemacht werden, soll ein Standart gesetzt werden, nämlich der 31.12. des aktuellen Jahres. Fehler können meiner Meinung nach nur auftreten, wenn kein datum übergeben wurde, ein falsches Format beim übergeben benutzt wurde oder die Werte keine Zahlen darstellen. Also ein KeyError, falls nix übergeben wurde und ein ValueError sonst.

Ruft man das ganze nun mit einem falschem Datum auf (Jahreszahl negativ --> ein "-" zuviel) entsteht ein ValueError, der eigentlich abgefangen werden sollte. Wird er aber nicht. Warum?

Der Quelltext ausschnitt ist hier zu sehen, zusammen mit entsprechender Variablenbelegung (cgitb ist aktiviert): http://www.pythonarea.net/max/alter.pl?al=-1911-3-23

Milan
Voges
User
Beiträge: 564
Registriert: Dienstag 6. August 2002, 14:52
Wohnort: Region Hannover

Hallo!
Die Execptions müssen in Klammern:
except (KeyError,ValueError):
Jan
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

Das find ich aber dumm... jetzt wo du es sagst ist es klar, ValueError wird dann als der Parameter interpretiert, in dem das tracebackobj. ladet. Ich war nur gewohnt, dass Tupel auch ohne Klammern erkannt werden... :oops:
Antworten