python でプログラミング中、try ~ except で例外を補足しますが、どのコードでその例外が発生したかを特定する方法がわからなかったので調べました。
https://docs.python.org/ja/2.7/library/sys.html
sys.exc_info() で返されるレースバックオブジェクトに設定された現在の行番号 tb_lineno で、例外が発生したコードの行番号がわかります。
import sys, os try: # リスト インデックス範囲外 for link in navi[0]: ・・・(省略)・・・ except Exception as e: exc_type, exc_obj, exc_tb = sys.exc_info() fname = os.path.split(exc_tb.tb_frame.f_code.co_filename)[1] print "%s, %s, %s" % (exc_type, fname, exc_tb.tb_lineno)
出力例:
<type 'exceptions.IndexError'>, 'test.py', 131
コメントを残す