c# で、Oracle データベースへの (非) 接続に関するすべてのエラーをキャッチできますか?
不適切に記述されたクエリに関するエラーはキャッチしたくありませんが、No listener, connection lost... などのエラーのみをキャッチします。
クエリが正しく記述されていない (またはテーブルが欠落している) 場合、これは私のせいです。しかし、Oracle またはネットワークがダウンしている場合、これは別の部門が保持する必要があります。
try catch 部分で接続を構築するコードを記述します。
try
{
BuildConnection(connectionString);
}
catch (OracleException ex)
{
//Connectivity Error
}
このタイプの問題に対する簡単な答えは Use Try Catch
Block like
try
{
// your code
}
catch (OracleException ex)
{
}
ORA-12150 から ORA-12236 までのエラーは、接続エラーに関連しています。いくつかの例:
ORA-12154: TNS: 指定された接続識別子を解決できませんでした
ORA-12152: TNS: 中断メッセージを送信できません
ORA-12157: TNS: 内部ネットワーク通信エラー
https://docs.oracle.com/cd/E11882_01/server.112/e17766/net12150.htmを参照してください。
確かに、特定の例外の種類をキャッチできます。または、それらがすべて同じ例外の種類である場合は、それをキャッチして、それが特定の種類であるかどうかを確認し、処理したくないものを再スローすることができます。構文がありません。例を次に示します...
try
{
// your Oracle code
}
catch (OracleException ex)
{
if (ex.Message == "Something you don't want caught")
{
throw;
}
else
{
// handle
}
}