Warnings in Exceptions umwandeln?

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.
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Warnings in Exceptions umwandeln?

Beitragvon CM » Dienstag 19. September 2006, 17:16

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
BlackJack

Beitragvon BlackJack » Dienstag 19. September 2006, 17:49

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.
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Beitragvon CM » Dienstag 19. September 2006, 18:00

"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 ...
BlackJack

Beitragvon BlackJack » Dienstag 19. September 2006, 21:12

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.
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Beitragvon CM » Mittwoch 20. September 2006, 09:30

Danke Dir - ich stand wirklich auf dem Schlauch. Habe ich den richtigen Code, bloß in der falschen Reihenfolge ausgeführt ... Grr.

Christian

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder