Seite 1 von 1

Fehler bei Laden einer Datei in ein Image abfangen?

Verfasst: Freitag 23. November 2007, 01:11
von maprie
Hi,

ich möchte ein Image aus einer Datei laden, am liebsten über wx.Image::LoadFile(). Sollte die Datei fehlerhaft sein, soll der Fehler abgefangen werden. So wie es aussieht gibt ::LoadFile() aber nur per bool zurück, ob es die Datei gibt oder nicht. Fehler bei den Imagehandlern (passenden Imagehandler nicht gefunden oder Fehler bei einlesen der Datei) werden ins log geschrieben. Standardmäßig erscheint dann ein Benachrichtigungsfenster. Aber auf genau diese Fehler möchte ich reagieren.
Denn dummerweise werden die Dateien auch dann als Image geladen, wenn kein passender Imagehandler gefunden wurde! Dazu gibt image.IsOk() auch noch True zurück. Klar, denn irgendwelche Daten sind vorhanden, aber leider nur unbrauchbare. Bei dem nächsten Aufruf einer Methode von Image krachts dann.

Gibt es eine normale Möglichkeit diese Fehler abzufangen oder muss ich irgendwie das Logging zur Fehlerbehandlung missbrauchen?

- maprie

Edit: Der bug sitzt vor dem Monitor!

Verfasst: Freitag 23. November 2007, 02:27
von HWK
Versuch mal, wx.Log.OnLog entsprechend zu überschreiben.
MfG
HWK

Verfasst: Samstag 24. November 2007, 00:53
von maprie
Danke für den Tip, aber wx.Image::LoadFile() gibt doch False bei Fehlschlag zurück und Image.IsOK() auch. :oops: Ich habe die ganze Zeit an der falschen Stelle rumgedoktert... :oops: :oops: :oops:
Jedenfalls habe ich mich ein bisschen mit dem Logging beschäftigt. Ich möchte alle Ausgaben auf Stderr ausgeben:

Code: Alles auswählen

...
logTarget = wx.LogStderr()
wx.Log_SetActiveTarget( logTarget )
...
Leider erscheinen immernoch die Benachrichtigungsfenster für die fehlgeschlagenen Imagehandler. Woran kann das liegen? Allgemein ist die Anleitung für die Anwendung des Loggings recht dürftig.
Und bei

Code: Alles auswählen

...
logTarget = wx.LogGui()
wx.Log_SetActiveTarget( logTarget )
...
stürzt Python in wxbase28uh_vc.dll ab.