Łapanie wyjątku, który wyglądałby tak:
Traceback (most recent call last):
File "c:/tmp.py", line 1, in <module>
4 / 0
ZeroDivisionError: integer division or modulo by zero
Chcę sformatować w:
ZeroDivisonError, tmp.py, 1
python
exception
stack-trace
traceback
Claudiu
źródło
źródło
Odpowiedzi:
źródło
sys.exc_info()
został wprowadzony w celu rozwiązania problemów z bezpieczeństwem wątków w poprzednim API. Jego wynik jest specyficzny zarówno dla bieżącego wątku, jak i bieżącej ramki stosu.Najprostsza forma, która działała dla mnie.
Wynik
źródło
Źródło (Py v2.7.3) dla traceback.format_exception () i wywoływane / powiązane funkcje bardzo pomaga. Żenująco zawsze zapominam czytać źródło . Zrobiłem to tylko po próżnym poszukiwaniu podobnych szczegółów. Proste pytanie: „Jak odtworzyć te same dane wyjściowe co Python dla wyjątku, z tymi samymi szczegółami?” To dałoby każdemu ponad 90% tego, czego szuka. Sfrustrowany wymyśliłem ten przykład. Mam nadzieję, że to pomaga innym. (Na pewno mi pomogło! ;-)
W szczegółowej odpowiedzi na to zapytanie:
źródło
'message' : exc_value.message
na'message' : str(exc_value)
na py3Oto przykład pokazania numeru wiersza, w którym ma miejsce wyjątek.
źródło