2017年4月15日土曜日

例外発生時のトレース情報

特に想定していない例外が発生した場合、例外が発生したコードのトレース情報を出力したいが、以下のようなコードでは出力されない。
import sys


def RaiseTest01():
    raise ValueError


def RaiseTest_main():
    RaiseTest01()

try:
    RaiseTest_main()
except:
    print("例外発生", sys.exc_info())



例外発生 (<class 'ValueError'>, ValueError(), <traceback object at 0x000000000394D588>)
他にいくつかパターンがあるようだが、traceback モジュールを利用してトレース情報を出力することができる。
import sys
import traceback


def RaiseTest01():
    raise ValueError


def RaiseTest_main():
    RaiseTest01()

try:
    RaiseTest_main()
except:
    print("例外発生", sys.exc_info())
    traceback.print_exc()



例外発生 (<class 'ValueError'>, ValueError(), <traceback object at 0x000000000394D588>)
Traceback (most recent call last):
  File "C:\Users\pyutil\traceback_test.py", line 13, in <module>
    RaiseTest_main()
  File "C:\Users\pyutil\traceback_test.py", line 10, in RaiseTest_main
    RaiseTest01()
  File "C:\Users\pyutil\traceback_test.py", line 6, in RaiseTest01
    raise ValueError
ValueError

0 件のコメント:

コメントを投稿