[seasar-dotnet:1623] Re: ODP.NET 使用時にSQLFailureExceptionのCauseDbExceptionがnullになる

kubo [E-MAIL ADDRESS DELETED]
2010年 3月 23日 (火) 10:40:14 JST


久保(jflute)です。

ORA-XXXを取得できたようで良かったです。
一方で、どうやら DbException を継承しない例外が
ODPから throw されてくるのですね...(ガッカリ...)
こればかりは(データプロバイダの話で)どうにも
ならないので、その方法でお願いします。

ちなみに、一意制約違反は、本当はDBFluteの機能として
明示的な例外を発生させたいところなのですが、
(Java版ではそうなっています)
それぞれのDBMSごとの一意制約違反コードの調査と
その検証(環境構築も含め)がかなり重たいため、
DBFlute.NETでは未実装のままです。
(DBMSというかデータプロバイダごとに取得方法が違うと
なれば、さらに検証は大変そう...)

2010/3/19 ikutirin <[E-MAIL ADDRESS DELETED]>:
> 状況報告です。
>
> SQLFailureExceptionの
> InnerExceptionのInnerExceptionにはきちんと
> ODPの例外(OracleException)が入っていました。
> ここからORA-XXXを取得できました。
>
> なぜ必要かというと、
> 「ロックしないで絶妙なタイミングでの外部キーエラーや
> 重複エラーだけをキャッチしたいから」
> です。
>
>
> kubo <[E-MAIL ADDRESS DELETED]> wrote:
>
>> 久保(jflute)です。
>>
>> ikutirinさん、こんばんは
>>
>> DBFlute.NETでは、特にODPとOLEの
>> 区別をつけて処理してるわけではないので、
>> その二つで例外の扱いに違いがあるのかもしれません。
>>
>> ということで、自動生成されたクラス:
>> InternalBasicHandler#DbExceptionHandler
>> を(色々)書き換えて、素のODPとOLEで
>> 例外の扱いにどういった違いがあるかどうか、
>> 確認してみてください。
>> (Messageの表示なども含めて)
>>
>> また、一方で(参考までに)どういった要件でORA-XXXを
>> 取得しようとしたのが教えていただけるとありがたいです。
>>
>> #
>> # 「OLEでは違った」っていう(検証)情報が非常に助かります
>> #
>>
>> 2010/3/17 ikutirin <[E-MAIL ADDRESS DELETED]>:
>> > 有識者の方
>> > ikutirinと申します。
>> >
>> > Seasar.Quil.dll:1.3.17.0、
>> > DBFlute:0.8.9.12
>> > で開発しています。
>> >
>> > 掲題の通り、
>> > ODP.NET使用時にSQLFailureExceptionのCauseDbExceptionがnullになります。
>> >
>> > OleDbを使用すればOleDbExceptionが入っています。
>> >
>> > どこか設定が間違っているのでしょうか。
>> >
>> > ORA-XXXXを参照したいのですが取得方法はありませんでしょうか。
>> >
>> > よろしくお願いします。
>> >
>> > _______________________________________________
>> > seasar-dotnet mailing list
>> > [E-MAIL ADDRESS DELETED]
>> > https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>> >
>> _______________________________________________
>> seasar-dotnet mailing list
>> [E-MAIL ADDRESS DELETED]
>> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>
> _______________________________________________
> seasar-dotnet mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>


seasar-dotnet メーリングリストの案内