OracleExceptionの例外処理について
投稿者 魔界の仮面弁士  (社会人)
投稿日時
2020/4/1 14:32:50
試していませんが、When あるいは If で処理できないでしょうか。
Catch ex As OracleException When ex.Number = 54
'ORA-00054: リソース・ビジー、NOWAITが指定されていました。
Catch ex As OracleException When ex.Number = 2291
'ORA-02291: 整合性制約(string.string)に違反しました - 親キーがありません
投稿者 T  (社会人)
投稿日時
2020/4/1 16:50:46
ex.Numberをex.Codeにすることで処理できました。
非常に助かりました。ご返信ありがとうございました。
非常に助かりました。ご返信ありがとうございました。
投稿者 魔界の仮面弁士  (社会人)
投稿日時
2020/4/1 17:04:39
System.Data.OracleClient の利用は避けてください。
https://docs.microsoft.com/ja-jp/dotnet/api/system.data.oracleclient.oracleexception
上記は Oracle Client 8.1.7 以降を必要としますが、.NET 2.0 以降では Oracle 純正のライブラリの
仕様が推奨されており、.NET 4.0 以降では、System.Data.OracleClient 自体が非推奨になっています。
そして、Oracle 純正の Managed / Unmanaged な ODP.NET の OracleException では、
Code ではなく Number を用いるようです。
https://docs.oracle.com/cd/E57425_01/121/ODPNT/OracleExceptionClass.htm
https://docs.microsoft.com/ja-jp/dotnet/api/system.data.oracleclient.oracleexception
上記は Oracle Client 8.1.7 以降を必要としますが、.NET 2.0 以降では Oracle 純正のライブラリの
仕様が推奨されており、.NET 4.0 以降では、System.Data.OracleClient 自体が非推奨になっています。
そして、Oracle 純正の Managed / Unmanaged な ODP.NET の OracleException では、
Code ではなく Number を用いるようです。
https://docs.oracle.com/cd/E57425_01/121/ODPNT/OracleExceptionClass.htm
VBで、OracleExceptionの例外処理を細かくしたいです。
エラーを起こすと詳細欄にはORA-01400などのエラーコードが出てくるのですが、TryCatch文で例外処理をしようとすると、OracleException以外に書きようがないので、全てのOracleExceptionに対して一つの処理しか施せません。どうすれば数あるOracleExceptionをそれぞれ処理できるでしょうか。