[Seasar-user:5889] [Teeda]ThrowsInterceptorでthrowした例外が初回はcatchできない(hotdeploy)
Asarima
[E-MAIL ADDRESS DELETED]
2007年 1月 25日 (木) 16:17:54 JST
Asarimaです。
Page〜Logic〜Daoという流れで処理を進めているとき、DaoでSQLException
が発生したら、独自のThrowsInterceptorでそれを掴んで、特定のランタイム
例外を投げ直すということをしています。
具体的に言えば、SQLException中のSQLStateとErrorCodeを見て、例えば
一意制約違反だと分かれば、独自のSQLUniqueConstraintExcpetionを投げる、
ということです。
これをPageクラスでcatchするのですが、なぜかcatchせずにエラーページ
が表示されてしまう時があり、調べて以下のことが分かりました。
・hotdeployの場合
初回のみcatchできない。2回目以降はcatchできる。
(2回目以降というのは、submit→エラー→戻る→submit→catch! という
ことです)
・cooldeployの場合
初回、2回目以降ともにcatchできる。
つまり、hotdeployの初回だけ失敗することになります。
このあたりの仕組みが全然理解できずにでおり、困っております。
申し訳ありませんが、なぜこうなるのか分かれば教えてください。
よろしくお願いいたします。
Seasar-user メーリングリストの案内