スポンサーリンク

【Python】try&exceptで505エラーとかのエラー内容を捕捉しよう

エラーが発生してもブラウザ画面は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()は共通関数として定義すると良いかも

コメント

タイトルとURLをコピーしました