2009-10-21 20 views
15

W przypadku nieprzechwyconego wyjątku Python domyślnie drukuje śledzenie stosu, sam wyjątek i kończy działanie. Czy ktoś jest świadomy sposobu, aby dostosować to zachowanie na poziomie programu (inne niż ustanawianie mojej własnej globalnej obsługi wyjątków catch-all), aby śledzenie stosu zostało pominięte? Chciałbym przełączać się w mojej aplikacji, czy ślad stosu jest drukowany, czy nie.Konfigurowanie domyślnej obsługi wyjątków Pythona

+2

Co jest nie tak z globalnym handler-catch? –

+0

@ S.Lott Nic złego, chciałem tylko wiedzieć. – ThomasH

Odpowiedz

22

Szukasz sys.excepthook:

sys.excepthook (rodzaj, wartość, traceback)

Funkcja ta drukuje daną traceback i wyjątek sys.stderr.

Gdy wyjątek jest podnoszony i nie jest przechwytywany, interpreter wywołuje sys.excepthook z trzema argumentami, klasą wyjątków, wystąpieniem wyjątku i obiektem traceback. W sesji interaktywnej dzieje się to tuż przed zwróceniem kontroli do monitu; w programie Python dzieje się to tuż przed wyjściem programu. Obsługa takich wyjątków najwyższego poziomu może być dostosowana przez przypisanie innej funkcji trzech argumentów do sys.excepthook.

+0

Tak, dziękuję. – ThomasH

+0

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

Powiązane problemy