2009-10-21 12 views
15

Per un'eccezione non rilevata, Python per impostazione predefinita stampa una traccia dello stack, l'eccezione stessa e termina. Qualcuno è a conoscenza di un modo per personalizzare questo comportamento a livello di programma (oltre a stabilire il mio gestore globale di eccezioni catch-all), in modo che la traccia dello stack sia omessa? Vorrei attivare o disattivare la mia app se la traccia dello stack è stata stampata o meno.Configurazione della gestione delle eccezioni predefinita di Python

+2

Cosa c'è che non va con un gestore globale catch-all? –

+0

@ S.Lott Niente di male, volevo solo sapere. – ThomasH

risposta

22

Stai cercando sys.excepthook:

sys.excepthook (tipo, valore, traceback)

Questa funzione consente di stampare un dato traceback ed eccezione a sys.stderr.

Quando un'eccezione viene sollevata e non rilevata, l'interprete chiama sys.excepthook con tre argomenti, la classe di eccezione, l'istanza di eccezione e un oggetto traceback. In una sessione interattiva questo accade appena prima che il controllo venga restituito al prompt; in un programma Python questo accade appena prima che il programma esca. La gestione di tali eccezioni di primo livello può essere personalizzata assegnando un'altra funzione a tre argomenti a sys.excepthook.

+0

Sì, è così, grazie. – ThomasH

+0

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