Seite 1 von 1

Execption "ignored"

Verfasst: Montag 18. Dezember 2006, 23:06
von JanDMC
Moin Leute..
Ich hab folgende Fehlermeldung

Code: Alles auswählen

Exception exceptions.AttributeError: "ID3 instance has no attribute 'modified'"
in <bound method ID3.__del__ of <ID3.ID3 instance at 0x01854B48>> ignored
Ich benutze ein Modul namens ID3.. Ich möchte allgemein wissen das die Fehlermeldung heißt und wann sowas auftreten kann. Wenn man das verallgemeinern kann. Hab sowas noch nie gehabt..

mfg Jan

Verfasst: Dienstag 19. Dezember 2006, 11:16
von CM
Moin Jan,

ich nehme mal an es handelt sich um das ID3-py-Modul von sourceforge: id3-py.sourceforge.net/ ? (Bei einem Post zu obskuren Modulen kann es wirklich helfen mit einem Link auf das Modul zu dienen: Nicht jeder kennt und hat alle Module. :wink: )

Aber was die Fehlermeldung heißt ist eigentlich klar: Du greifst auf ein Attribute von ID3 zurück, daß es nicht gibt - aber eigentlich, wenn ich mir den Code so anschaue, sollte es ihn geben. Insofern vermute ich einen Bug des Moduls, habe aber auch nicht die Nerven mich jetzt damit auseinanderzusetzen, zumal die letzten Änderungen 2002 waren und ich noch nicht einmal weiß, ob ich zum richtigen Modul rate. Gibt es nichts Aktuelleres oder besser Gepflegtes, was dieselbe Leistung erbringt?

Gruß,
Christian

Verfasst: Dienstag 19. Dezember 2006, 12:51
von JanDMC
Moin..

zum Modul: Das war der erste treffer bei google und was ich mir vorstellte ging damit auch ziemlich schnell deswegen hab ich nicht weiter gesucht. Das problem taucht auf wenn ich einen "try - except" block habe und in dem try block eine exception geworfen wird, diese will ich aber nicht weiter beachten deswegen "except:pass". Ich verstehe bloß nicht warum ich drarauf hingewiesen werde, das eine exeption geworfen wurde obwohl sie im try block steht...


mfg

ps: dann guck ich ma nach einem anderen id3modul :D

danke

Verfasst: Dienstag 19. Dezember 2006, 14:05
von birkenfeld
Ihr müsst die Meldung schon genauer lesen. Da steht:

Code: Alles auswählen

Exception exceptions.AttributeError: "ID3 instance has no attribute 'modified'"
in <bound method ID3.__del__ of <ID3.ID3 instance at 0x01854B48>> ignored
In Deutsch: Die Exception ist in "ID3.__del__()" aufgetreten. Deswegen wurde sie auch ignoriert, weil Exceptions in __del__-Methoden immer ignoriert werden.

Sprich: es handelt sich um einen Bug im ID3-Modul, das in __del__ auf ein Attribut zugreifen will, das nicht/nicht mehr existiert.

Verfasst: Dienstag 19. Dezember 2006, 14:30
von JanDMC
Danke das die exceptions in __del__ immer ignoreort werden wusste ich nich.. ma gucken dann schau ich mir die __del__ ma genauer an..


mfg Jan

Verfasst: Dienstag 19. Dezember 2006, 14:33
von CM
Ja, birkenfeld, hast recht. Allerdings - wenn ich mir das richtige Modul anschaue - ruft __del__ nur self.write() auf, was wiederum self.modified abfragt. Dieses aber kann gar nicht gelöscht werden - es sei denn, jemand fummelt hat da am Code rumgefummelt. Oder habe ich da auch was übersehen?

Gruß,
Christian

Verfasst: Dienstag 19. Dezember 2006, 18:07
von Leonidas
CM hat geschrieben:Allerdings - wenn ich mir das richtige Modul anschaue - ruft __del__ nur self.write() auf, was wiederum self.modified abfragt. Dieses aber kann gar nicht gelöscht werden - es sei denn, jemand fummelt hat da am Code rumgefummelt. Oder habe ich da auch was übersehen?
Ja, das, insbesondere die zweite Warnung zu __del__():
Python 2.5 reference hat geschrieben:Also, when __del__() is invoked in response to a module being deleted (e.g., when execution of the program is done), other globals referenced by the __del__() method may already have been deleted.
... was scheinbar nicht nur bei globals der Fall ist sondern auch bei Instanzvariablen. Wie gesagt, __del__() sollte wirklich nach Möglichkeit nicht verwendet werden.

Verfasst: Dienstag 19. Dezember 2006, 20:34
von BlackJack
Leonidas hat geschrieben:
Python 2.5 reference hat geschrieben:Also, when __del__() is invoked in response to a module being deleted (e.g., when execution of the program is done), other globals referenced by the __del__() method may already have been deleted.
... was scheinbar nicht nur bei globals der Fall ist sondern auch bei Instanzvariablen.
Um $GOTTES willen nein! Das gilt natürlich *nicht* für Objekte, die an das Objekt gebunden sind auf dem `__del__()` aufgerufen wurde. Genau das soll/muss man ja mit "globalen" Objekten machen, damit man *sicher* sein kann, dass die noch nicht vom GC gefressen wurden.

Verfasst: Dienstag 19. Dezember 2006, 21:46
von Leonidas
Wie lässt sich dann CMs Beobachtung erklären? Das jemand einfach so mal self.modified löscht halte ich für unwarscheinlich.

Verfasst: Dienstag 19. Dezember 2006, 22:04
von BlackJack
Keine Ahnung, im Modul selbst deutet nichts darauf hin.