Python-Ausnahmebildung

8

Ich baue ein Tool, bei dem sich die Exceptions nach oben verbreiten und neue Daten über den Kontext der Exception zur Exception hinzugefügt werden. Das Problem besteht darin, dass zu dem Zeitpunkt, an dem die Ausnahme auf die oberste Ebene gelangt, alle zusätzlichen Kontextdaten vorhanden sind, aber nur die neueste Stapelverfolgung angezeigt wird. Gibt es eine einfache Möglichkeit, eine Ausnahme den ursprünglichen Stack-Trace anzeigen zu lassen, in dem es statt des letzten Stack-Trace geworfen wurde, oder sollte ich den ursprünglichen Stack-Trace zum ersten Mal verwenden, wenn sich die Ausnahme ausbreitet?

Zum Beispiel der folgende Code:

%Vor%

ergibt die folgende Ausnahme:

%Vor%

wo ich im Idealfall dem Benutzer das irgendwie zeigen möchte:

%Vor%

Dies weist den Benutzer auf die Zeile hin, in der der Fehler ursprünglich aufgetreten ist.

    
So8res 11.12.2009, 23:37
quelle

1 Antwort

26

Python-Ausnahmen sind ein wenig wie Java. Es gibt eine Möglichkeit, die Ausnahme neu zu starten, ohne den Stapel abzukürzen.

Verwenden Sie einfach raise ohne ein Argument. Das Ergebnis ist:

%Vor%

Sie können einige Dinge über das Objekt e ändern, auch wenn Sie nur raise ohne dieses Argument haben - zum Beispiel:

%Vor%

ändert die Ausnahmebedingungsnachricht tatsächlich. Sie können wahrscheinlich auch die anderen Optionen auf diese Weise ändern - ohne den Stapel zu zerstören.

    
viraptor 11.12.2009, 23:49
quelle

Tags und Links