[Python-de] Versuch über die Ausnahmebedingung

Georg Mischler schorsch at schorsch.com
Tue Dec 10 17:04:48 EST 2002


Gerson Kurz wrote:

> a) daß ich wissen muß, dass UND WELCHE Exceptions eine Funktion wirft

Alles was du brauchst ist die Erkenntnis, dass jede Exception von
der Klasse "Exception" abgeleitet ist. Den tatsaechlichen Klassennamen
einer konkreten Instanz brauchst du nur dann zu wissen, wenn du darauf
ganz spezifisch eingehen willst.


> b) daß es nicht einfach ist, einzelne Funktionen "die Fehlschlagen dürfen"
> mit Funktionen "die in der Richtigen Reihenfolge aufgerufen werden müssen"
> zu mischen, wenn einem potentiell Exception Handling dazwischenfunkt.


Findest du wirklich, dass folgendes komplizierter ist, als was du
in C mit den HRESULTs machst?

try
    cfg_open()
except Exception, e:
	log('Oeffnen der Konfiguration fehlgeschlagen. (%s)' % str(e))
    return value
try:
    try: value = cfg_get(name, value)
    except Exception, e:
		log('Lesen von "%(k)s" fehlgeschlagen. (%(e)s)'
				% {'k':name, 'e':str(e)})
    try: cfg_set(name, value)
    except Exception, e:
		log('Schreiben von "%(k)s:%(v)s" fehlgeschlagen. (%(e)s)'
				% {'k':name, 'v':value, 'e':str(e)})
finally:
    cfg_close()
    return value


Gegenueber den HRESULTs hat das sogar noch den Vorteil, dass in deinem
Log dann nicht nur steht: "Fehler: 43948", sondern etwas einigermassen
aussagekraeftiges (naja, wie z.B. "Der Parameter ist falsch", oder was
immer den Jungs von MS wieder kreatives eingefallen ist).


-schorsch

-- 
Georg Mischler  --  simulations developer  --  schorsch at schorsch com
+schorsch.com+  --  lighting design tools  --  http://www.schorsch.com/





More information about the Python-de mailing list