OracleExceptionの例外処理について への返答

投稿で使用できる特殊コードの説明。(別タブで開きます。)
本名は入力しないようにしましょう。
投稿した後で削除するときに使うパスワードです。返答があった後は削除できません。
返答する人が目安にします。相手が小学生か社会人かで返答の仕方も変わります。
最初の投稿が質問の場合、質問者が解決時にチェックしてください。(以降も追加書き込み・返信は可能です。)
※「過去ログ」について書くときはその過去ログのURLも書いてください。

以下の返答は逆順(新しい順)に並んでいます。

投稿者 魔界の仮面弁士  (社会人) 投稿日時 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
投稿者 T  (社会人) 投稿日時 2020/4/1 16:50:46
ex.Numberをex.Codeにすることで処理できました。
非常に助かりました。ご返信ありがとうございました。

投稿者 魔界の仮面弁士  (社会人) 投稿日時 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 13:40:40
お世話になります。
VBで、OracleExceptionの例外処理を細かくしたいです。
エラーを起こすと詳細欄にはORA-01400などのエラーコードが出てくるのですが、TryCatch文で例外処理をしようとすると、OracleException以外に書きようがないので、全てのOracleExceptionに対して一つの処理しか施せません。どうすれば数あるOracleExceptionをそれぞれ処理できるでしょうか。