Es sieht so aus, als ob ich noch nicht ganz den Ausnahmebehandlungsfall habe. Ich ratlos bin :( Der folgende Code gibt manchmal diese Fehlermeldung:.Python versuchen, außer endlich
File "applications/pingback/modules/plugin_h_pingback.py", line 190, in ping
db(table.id==id_).update(status=status)
UnboundLocalError: local variable 'status' referenced before assignment
Ich würde erwarten, status
immer ein Wert zugewiesen worden Könnte es sein, dass eine andere Ausnahme ausgelöst wird (vielleicht in der Innen try
) und die finally
verschleiern es?
...
try:
server_url = self._get_pingback_server(target)
except PingbackClientError, e:
status = e.message
else:
try:
server = xmlrpclib.ServerProxy(server_url)
status = server.pingback.ping(self.source, target)
except xmlrpclib.Fault, e:
status = e
finally:
db(table.id==id_).update(status=status) # <-- UnboundLocalError
...
Danke, HC
Dank Mark. Also verbirgt die Datei schließlich alle nicht abgefangenen Exceptions, die an anderer Stelle im try-Block ausgelöst werden, wenn sie selbst fehlschlagen, weil ihr Block immer ausgeführt wird? – hcvst
"Versteckt" in dem Sinne, dass es es vorübergehend abfängt und es nur dann weiterleitet, wenn der finally-Block keine eigene Ausnahme zum Erhöhen hat. –