PythonでInternal Server Errorの原因探しに使おうtry except

今日もUnicodeEncodeErrorが出ちゃってはまったんですよ。

まず、結構まじめに開発やっていました。私はMacBook Air使っているんです。FlaskでWebサイト作っていまして。会員制サイトの退会機能を作っていたんです。

ローカルではうまくいったんで、gitにコミットして、サーバー上に展開したんですね。
サーバーはapacheです。wsgiで動かしてるんです。

そうしたらうまく動かない。なんでなんだ..

で結局見つかったんです。

エラーの原因は print だったんです。printで、退会のときのご指摘内容を表示していたんですよ。それが、本番(サーバー:Linux)ではInternal Server Errorになっちゃう。

一生懸命探して、やっと見つけました。UnicodeEncodeErrorが出ちゃったというおちでした。

バグはね、見直しても、ぜーーーーんぜん気づかないときもあります。そんなときに、どこがエラーかわかるようにしたい!そりゃー、今回コミットした処理を全部try-exceptで囲めばいい。しかし、ただ囲んでもいい情報にはなりません。

エラーの内容と、どこでエラーが出ているのか、わかればさほどは苦労しません。もうちょっとずつやらずに、一気に、ちょっと時間をロスしても、try-exceptで囲みましょう!

import sys, os
〜中略〜
try:
# ここが処理内容
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(exc_type, fname, exc_tb.tb_lineno)

こうやって囲めば、

<type ‘exceptions.NotImplementedError’>, ‘test.py’, 21

こういうような表示でエラーになります。

これでサクッと解決!….(次回からサクッと解決しましょう…えーん早く知りたかったー;;)

スポンサーリンク
hige1
hige1

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
hige1