[Seasar-user:19919] Re: [S2Dao]oracleエラー取得について
Koichi Kobayashi
[E-MAIL ADDRESS DELETED]
2010年 6月 25日 (金) 12:30:31 JST
小林 (koichik) です.
Date: Fri, 25 Jun 2010 11:01:22 +0900
From: 佐野 詠一郎 <[E-MAIL ADDRESS DELETED]>
To: <[E-MAIL ADDRESS DELETED]>
Subject: [Seasar-user:19918] [S2Dao]oracleエラー取得について
> S2DaoでSQL実行時に発生した
> oracleエラーコード、メッセージをserviceで取得する方法をご教授願います。
SQLException の getErrorCode および
getMessage() で取得できます.
S2Dao は SQLException を SQLRuntimeException
等にラップしてスローするので,SQLException を
得るにはキャッチした例外の getCause() を
辿る必要があります.
S2JDBC の StandardDialect クラスがまさに
そういう処理をしているので参考にどうぞ.
protected Integer getErrorCode(Throwable t) {
SQLException cause = getCauseSQLException(t);
if (cause != null) {
return cause.getErrorCode();
}
return null;
}
protected SQLException getCauseSQLException(Throwable t) {
SQLException cause = null;
while (t != null) {
if (t instanceof SQLException) {
cause = SQLException.class.cast(t);
if (cause.getNextException() != null) {
cause = cause.getNextException();
t = cause;
continue;
}
}
t = t.getCause();
}
return cause;
}
--
<component name="koichik">
<property name="fullName">"Koichi Kobayashi"</property>
<property name="email">"[E-MAIL ADDRESS DELETED]"</property>
<property name="blog">"http://d.hatena.ne.jp/koichik"</property>
</component>
Seasar-user メーリングリストの案内