Bedingtes Error-Handling...

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.
Antworten
Benutzeravatar
jens
Moderator
Beiträge: 8483
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Freitag 9. Dezember 2005, 14:01

Also ich mach hier sowas:

Code: Alles auswählen

        print "Find id for %s.%s..." % (package, module_name),
        try:
            plugin_id = self.db.get_plugin_id(package, module_name)
        except Exception, e:
            if not error_handling:
                raise Exception(e)
            print "ERROR:", e
        else:
            print "OK, id is:", plugin_id
        print
Also wenn error_handling==False, wird wirklich ein Traceback druchgehauen... Aber irgendwie ist das nicht sooo toll...
Weil z.B. die letzte Zeile im Traceback, die mit "raise..." ist und nicht die eigentliche Zeile, in dem der Fehler aufgetaucht ist...

Jemand eine Idee, wie man das besser machen kann???

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
henning
User
Beiträge: 274
Registriert: Dienstag 26. Juli 2005, 18:37

Samstag 10. Dezember 2005, 09:35

Ich hab das mal so gemacht:

Code: Alles auswählen

DEBUG=True

def catch_if_no_debug(extyp):
  return (not DEBUG) and extyp or None

try:
  do_something()
except catch_if_no_debug(Exception), e:
  # exception behandeln
else:
  # else wird nur ausgeführt, wenn es
  # keine exception gab
  # Wenn debug=True ist, wird eine Exception geworfen, die hier nicht abgefangen wird.
Wenn Debug=True ist, gibt catch_if_no_debug "None" zurück, welches kaum als Exception geschmissen werden dürfte, ansonsten die Exception-Klasse, die man ihm übergibt.
Antworten