エラーが発生してもブラウザ画面は505エラー、ログファイルにもでてなくて原因がわからない、なんてことがあると思います
そんなときはtry exceptを使えばおk
「except Exception as e:」と書いて
このeを出力してやるとエラーの内容がわかる
Djangoの場合はuwsgi.logに内容を出したりしてました
try:
なんか失敗する処理
except Exception as e:
print('e:')
print(e)
どのファイルでどの行番号で発生したエラーなのかも捕捉したい場合には以下のように書く
import linecache
import sys
def PrintException():
exc_type, exc_obj, tb = sys.exc_info()
f = tb.tb_frame
lineno = tb.tb_lineno
filename = f.f_code.co_filename
linecache.checkcache(filename)
line = linecache.getline(filename, lineno, f.f_globals)
print('EXCEPTION IN ({}, LINE {} "{}"): {}'.format(filename, lineno, line.strip(), exc_obj))
try:
なんか失敗する処理
except Exception as e:
print('e:')
print(e)
PrintException()
PrintException()は共通関数として定義すると良いかも
コメント