2012-04-14 8 views
0

ここに私の例外クラスで、ここで店、それが発生したときに例外が作成したオブジェクト、Pythonの

class SampleError(Exception): 
    def __init__(self): 
     self.history = Stack() 

が関数である、

def f(x): 
    raise SampleError 

F(x)は、どのように実行されますSampleErrorが呼び出されている間に作成されたスタックを格納します。

いつものように!

+0

? – bereal

+0

はい!変数に格納します。 ^ – isal

答えて

1

tracebackモジュールをご覧ください。どのインスタンスからもトレースバックを生成することができます。後処理の後に任意の形式で保存することもできます。

2

あなたがsys.exc_info()を使用し、分析のための変数に割り当てる意味「ストア」による場合:

import sys 
try: 
    f() 
except: 
    exc_type, exc, trace = sys.exc_info() # trace is the traceback object 

仕様で循環参照に関する警告に注意してください。

1

多分あなたはこのようなことをしようとしていますか?

輸入トレースバック

class SampleError(Exception): 
    def __init__(self): 
     self.history = traceback.extract_stack() 

def f(x): 
    raise SampleError 

try: 
    f(5); 
except SampleError, e: 
    print e.history 
    out = traceback.format_list(e.history) 
    print out[0] 
0

あなただけの例外は、属性にアクセスする場合:あなたは変数に、意味ですか、 "店舗" と

try: 
    f() 
except SampleError, error: 
    history = error.history 
関連する問題