[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 メーリングリストの案内