ちゃお…†
まいおり…†
Pythonで例外をcatchした際にexcept
節で例外の詳細を表示したいときってありますよね?そんなときは以下のコードをコピペしてください!
import traceback
import re
import sys
try:
pass # ここに何か処理を書く
except Exception as e:
error_class = type(e)
error_description = str(e)
err_msg = '%s: %s' % (error_class, error_description)
print(err_msg)
tb = traceback.extract_tb(sys.exc_info()[2])
trace = traceback.format_list(tb)
print('---- traceback ----')
for line in trace:
if '~^~' in line:
print(line.rstrip())
else:
text = re.sub(r'\n\s*', ' ', line.rstrip())
print(text)
print('-------------------')
以下はtry
節に a = 1 / 0
と書いて実行した時の標準出力です。
<class 'ZeroDivisionError'>: division by zero
---- traceback ----
File "/private/tmp/example.py", line 6, in <module>
a = 1 / 0
~~^~~
-------------------
これでゼロ除算が起きてるのがファイルの6行目だとわかりますね。
もちろんprint
関数じゃなくてloggerに出力させたりお好みにカスタマイズしてお使いください!
みんな終電大丈夫?