2011-07-08 19 views

答えて

5

スタックトレース自体が例外オブジェクト自体に格納されていません。ただし、sys.exc_info()tracebackモジュールを使用して最後の最近の例外のスタックトレースを印刷することができます。例:

import sys 
import traceback 

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

あなたはすぐにスタックトレースを表示したくない場合は、sys.exc_info()どこかの戻り値を格納することが可能なはずです。

+1

sys.exc_info()の結果を盲目的に保存すると、悪い結果になります... http://docs.python.org/library/sys.html#sys.exc_info - "警告トレースバック戻り値を例外を処理している関数内のローカル変数は、循環参照を引き起こします。 –

+3

また、traceback.print_tb(* sys.exc_info())ではなく、http://docs.python.org/library/traceback.html#traceback.format_excを使用して、書式設定されたトレースバック文字列を取得することをおすすめします。 –

関連する問題