Hatena::ブログ(Diary)

present このページをアンテナに追加 RSSフィード Twitter

2010-03-02

Google App Engine で集約例外ハンドラ

Google App Engine の webapp.RequestHandler には、ハンドラ内で例外が発生したときに呼び出される handle_exception メソッドがあります。このメソッド、デフォルトでは HTTP ステータスコードを 500 に設定するだけですが、これをオーバーライドして、動作をカスタマイズできます。

例外の情報をログに出力するベースハンドラクラスを作成し、リクエストハンドラはベースハンドラを継承すれば、集約例外ハンドラになりますね。

class BaseHandler(webapp.RequestHandler):
    def handle_exception(self, exception, debug_mode):
        # 例外情報をログに出力。
        logging.exception(exception)

        # とりあえず親の実装を呼び出しておく。
        # 独自のエラーページを表示するのもいいかも。
        super(BaseHandler, self).handle_exception(exception, debug_mode)

class MainHandler(BaseHandler):
    def get(self):
        # 何かやる

毎回 try-catch を書いたり、例外情報をログに出力するデコレータを作るよりも、この方が楽。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/griefworker/20100302/handle_exception