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
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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???

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
henning
User
Beiträge: 274
Registriert: Dienstag 26. Juli 2005, 18:37

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