2011-07-08 21 views

Odpowiedz

5

Sam ślad stosu nie jest przechowywany w samym obiekcie wyjątku. Można jednak wydrukować ślad stosu ostatniego ostatniego wyjątku przy użyciu modułu sys.exc_info() i traceback. Przykład:

import sys 
import traceback 

try: 
    raise Exception('foo failed') 
except Exception as e: 
    traceback.print_tb(*sys.exc_info()) 

Jeśli nie chcesz, aby natychmiast wyświetlić ślad stosu, powinno być możliwe do przechowywania wartości zwracanej sys.exc_info() gdzieś.

+1

Zapisywanie wyników sys.exc_info() na ślepo spowodowałoby zło ... z http://docs.python.org/library/sys.html#sys.exc_info - "Ostrzeżenie Przypisanie wartości zwracanej przez traceback do zmienna lokalna w funkcji, która obsługuje wyjątek, spowoduje odwołanie cykliczne. " –

+3

Również zamiast traceback.print_tb (* sys.exc_info()), polecam http://docs.python.org/library/traceback.html#traceback.format_exc, aby uzyskać sformatowany ciąg śledzenia. –

Powiązane problemy