Inner Exceptions

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
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

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
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

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.
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

http://www.python.org/dev/peps/pep-0344/ hab nun sogar ein PEP dazu gefunden :)
Antworten