Seite 1 von 1

Bedingtes Error-Handling...

Verfasst: Freitag 9. Dezember 2005, 14:01
von jens
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???

Verfasst: Samstag 10. Dezember 2005, 09:35
von henning
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.