<< 2007/08/16 | Home | 2007/08/18 >>
PR: 転職    転職    合宿免許    漫画    シルバー    ブライダルエステ    墓地・霊園    葬式   

夏風邪

ヴ〜、のどが痛い、というか痒い。

のどぬ〜るしたら、ちょっと良くなったけど。賞味有効期限切れて半年経ってた。まぁ腐るようなもんじゃないよね。

Struts2例外処理

どうもうまくいかないケースがあるなと思ったら、OGNL => アクションのゲッタに来た時に、ぬるぽとか投げると、OgnlValueStackの中のfindValue(String, Class)で飲み込まれてしまうことが分かった。

        } catch (Exception e) {
            logLookupFailure(expr, e);

            return findInContext(expr);
        } finally {

ここで飲まれちゃうと、exception handlerに渡らないから、例外処理ハンドラが起動しないし、open session in viewパターンを使いたい時に上位側で例外を監視してcommit/rollbackなんかしていると、例外が来ないもんだから、間違ってcommitしちゃって、えらいことになる。まぁ良くあるExceptionのcatchバグパターンだから、RuntimeExceptionのcatch節を追加してみたのだけど、

        } catch (RuntimeException e) {
            logLookupFailure(expr, e);
            throw e;
        } catch (Exception e) {
            logLookupFailure(expr, e);

            return findInContext(expr);
        } finally {

まぁ確かに、これで上位層に例外が渡るようになって、うまくいくんだけど、どうもリザルトが二度実行されることになるのが、まずいようで、ブラウザにStream closedというメッセージと共にスタックトレースが表示される。ぬるぽなのに「Stream closed」じゃ、わけ分からんよなぁ。一応Struts2のMLに投げてみた。

このサイトの掲載内容は私自身の見解であり、必ずしもIBMの立場、戦略、意見を代表するものではありません。
日本アイ・ビー・エム 花井 志生 Since 1997.6.8