2009-10-21 5 views
15

Bei einer nicht abgefangenen Ausnahme druckt Python standardmäßig einen Stack-Trace, die Ausnahme selbst, und wird beendet. Kennt jemand eine Möglichkeit, dieses Verhalten auf Programmebene anzupassen (abgesehen von der Einrichtung eines eigenen globalen Catch-All-Exception-Handlers), sodass der Stack-Trace weggelassen wird? Ich möchte in meiner App umschalten, ob der Stack-Trace gedruckt wird oder nicht.Konfigurieren der Standardausnahmebehandlung von Python

+2

Was ist los mit einem globalen Catch-All-Handler? –

+0

@ S.Lott Nichts falsch, ich wollte es nur wissen. – ThomasH

Antwort

22

Sie suchen sys.excepthook:

sys.excepthook (Typ, Wert, Traceback)

Diese Funktion druckt eine gegebene Zurückverfolgungs und Ausnahme, um sys.stderr.

Wenn eine Ausnahme ausgelöst und nicht abgefangen wird, ruft der Interpreter sys.excepthook mit drei Argumenten auf, der Ausnahmeklasse, der Ausnahmeinstanz und einem Traceback-Objekt. In einer interaktiven Sitzung geschieht dies unmittelbar bevor die Steuerung an die Eingabeaufforderung zurückgegeben wird. In einem Python-Programm geschieht dies kurz bevor das Programm beendet wird. Die Behandlung solcher Ausnahmen auf oberster Ebene kann angepasst werden, indem sys.excepthook eine andere Funktion mit drei Argumenten zugewiesen wird.

+0

Ja, das war's, danke. – ThomasH

+0

Merci, j'ai trouvé là ce qu'il me fallait! – eyquem

Verwandte Themen