Seite 1 von 1

Inner Exceptions

Verfasst: Sonntag 22. Juli 2007, 02:44
von veers
Ich schreibe gerade eine Konfigurations Klasse und bin dabei auf ein Problem gestossen.
Und zwar würde ich bei einem Fehler beim Parsen gerne eine eigene Exception raisen, dieser kann ich dann noch einige Details, wie die Zeile, Zeilen Nummer etc. beilegen. Mein Problem ist nun das ich die Exception welche die Exception ausgelöst hat nicht verlieren will.

Wenn ich mich recht erinnere kennt C# Inner Exceptions für diesen Zweck. Hat Python etwas vergleichbares?

Gruss,
Jonas

Verfasst: Sonntag 22. Juli 2007, 08:25
von birkenfeld
Nein, hat es (noch) nicht. In diesem Fall kannst du natürlich die "alte" Exception einfach als Attribut an die neue hängen:

Code: Alles auswählen

try:
    if 6 * 9 != 42:
        raise RuntimeError("wrong world")
except Exception, exc:
    newexc = SystemError("foo")
    newexc.previous = exc
    raise newexc
Vereinfachen kann man das dann, indem man eine eigene Exception-Klasse erstellt, die als Argument die "alte" Exceptioninstanz nimmt und diese entsprechend anzeigt.

Verfasst: Montag 23. Juli 2007, 08:12
von veers
http://www.python.org/dev/peps/pep-0344/ hab nun sogar ein PEP dazu gefunden :)