Seite 1 von 1

Warnings in Exceptions umwandeln?

Verfasst: Dienstag 19. September 2006, 17:16
von CM
Hoi,

ich möchte gerne Warnings eines externen Moduls als Exceptions behandeln, soll heißen, daß jede Warning zum Abbruch des Programms führen soll oder per try / except abgefangen werden kann.
Irgendwie schaffe ich es zwar sämtliche Warnings gänzlich zu unterdrücken, aber das ist ja nicht was ich wünsche. Kann mir jemand in einem Snippet zeigen wie das geht (natürlich ohne das externe Modul zu modifizieren)?

Gruß,
Christian

Verfasst: Dienstag 19. September 2006, 17:49
von BlackJack
Das hier noch nicht gefunden

/usr/share/doc/python2.4/html/lib/warning-filter.html

oder Probleme mit der Verwendung?

PS: python.org ist gerade nicht erreichbar, sonst hätte ich die Doku dort verlinkt.

Verfasst: Dienstag 19. September 2006, 18:00
von CM
"Nur" ein Problem mit der Verwendung. (Irgendwie muß ich bald mal lernen klar rüber zu kommen :oops:)

So weit klar:

Code: Alles auswählen

>>> import warnings
>>> def f():
...    warnings.warn('etst')
...
>>> f()
/etc/pythonstart:2: UserWarning: etst
  # enabling name completion
Wenn ich jetzt aber

Code: Alles auswählen

warnings.filterwarnings('error',category=Warning)
versuche, ergibt der Aufruf von f keine Exception, sondern gar nichts mehr.

Meine Frage ist vielleicht etwas anfängermäßig, aber ich stehe wirklich auf dem Schlauch. Vielleicht magst Du mich in der richtigen Richtung runterschubsen?

Danke,
Christian

PS python.org wird wahrscheinlich z. Zt. völlig überlastet sein, wegen all der Downloads von 2.5. Ich habe es auch schon probiert und werde wohl bis morgen warten ...

Verfasst: Dienstag 19. September 2006, 21:12
von BlackJack
Die richtige Richtung ist wohl das jeder weitere Aufruf von `f()` keine Wirkung mehr hat weil jede Warnung normalerweise nur einmal ausgegeben wird.

Also entweder `f()` vorher nicht Aufrufen oder das (globale) Dictionary `__warningregistry__` leeren.

Verfasst: Mittwoch 20. September 2006, 09:30
von CM
Danke Dir - ich stand wirklich auf dem Schlauch. Habe ich den richtigen Code, bloß in der falschen Reihenfolge ausgeführt ... Grr.

Christian