[cubby-user:209] Re: Actionでの予期せぬ例外の捕捉に関しまして

tsuyoshi yoshizawa [E-MAIL ADDRESS DELETED]
2011年 2月 3日 (木) 02:27:07 JST


はじめまして、よしざわといいます。

ロギングだけであれば ThrowsInterceptor を継承して (Seasar2 利用時)
それぞれ対応できますが、ページ遷移が難しいと感じます。

Cubby には Plugin 機構が提供されていて、いくつかのタイミングでフック
できるようになっています。そのうちの invokeAction を使うと例外クラスでうまく
ハンドリングできるかと思います。 Interceptor の AOP より分かりやすく
個人的に気に入っています。

実装方法は AbstractPlugin を継承し、 invokeAction メソッドをオーバライドし
Action 実行前後に try/catch を挟んで例外クラスごとに forward を切り替え
られます。

public class UncaughtExceptionHandlePlugin extends AbstractPlugin {

    /**
     * {@inheritDoc}
     */
    @Override
    public ActionResult invokeAction(ActionInvocation invocation) throws
Exception {
        try {
            return super.invokeAction(invocation);
        } catch (XXXException e) {
            return new Forward("/error/xxx.html");
        } catch (YYYException e) {
            return new Forward("/error/yyy.html");
        }
    }
}

Plugin を機能させるためには META-INF/services/org.seasar.cubby.plugin.Plugin
ファイルを作成し、プラグインのクラス名を 1 行ずつ記述する必要があります。
http://ml.seasar.org/archives/cubby-user/2009-October/000181.html

参考になればと思います。

(11/02/02 15:41), [E-MAIL ADDRESS DELETED] wrote:
> お世話になります。竹内と申します。
> 
> Cubbyの実装方法に関して質問させていただきます。
> 
> 実装環境
>   Cubby 2.0.9
>   Seaser 2.4.43
>   Mayaa
> 
> Actionで予期せぬ例外が発生した際、捕捉し、
> ログ出力や例外に応じたエラーページへ
> 遷移する実装をしたいと考えております。
> 
> cubby-showcaseにありますAuthActionInterceptorの様な形で
> Interceptorクラスを用意する形が適切でしょうか。
> 
> 大変恐れ入ります。
> ご回答のほど、よろしくお願いします。
> _______________________________________________
> cubby-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/cubby-user



cubby-user メーリングリストの案内