2017-12-03 7 views
0

トレースバックでメイン関数に例外を渡そうとしていますが、期待通りに機能しません。ここでPython例外でトレースバックを取得します。

import sys 
import traceback 

def test_function(): 
    return 0/0 

def task1(): 
    try: 
     a = 1 
     test_function() 
    except Exception as e:  
     print e 
     traceback = sys.exc_info()[2] 
     raise Exception(), 'Error message', traceback  

def main(): 
    try: 
     task1() 
    except Exception, e: 
     print e 

print 'start' 
main() 
print 'end' 

は私の結果である: -

start 
integer division or modulo by zero 
instance exception may not have a separate value 
end 
+0

のタプルのリストを取得するにはtraceback.extract_stack()を使用することができます。この記事で必要なものを見つけることができます:https://stackoverflow.com/questions/3702675/how-to-print-the-full-traceback-without-halting-the-program – whitebeard

+1

[印刷方法プログラムを停止せずに完全なトレースバック?](https://stackoverflow.com/questions/3702675/how-to-print-the-full-traceback-without-halting-the-program) – whitebeard

答えて

1

トレースバックは、モジュールの名前である、あなたはドンとき、あなたがそれを見る方法のようなスタックトレースをプリントアウトしますtraceback.print_stack()ような方法は、」これで終わりです使ってみてくださいエラーをキャッチしないでください。

は、ここで詳細を参照してください。traceback doc

あなたはトレースバックをインポートしてから除く句でそれを再割り当てスタック