OracleExceptionクラスは、Oracle Data Provider for .NETでエラーが発生したときに表示される例外を表します。各OracleExceptionオブジェクトには、エラーまたは警告について説明するErrorプロパティ内のOracleErrorオブジェクトが少なくとも1つ含まれます。
クラスの継承
System.Object
System.Exception
System.SystemException
System.Runtime.InteropServices.ExternalException(ADO.NET 2.0のみ)
System.Data.Common.DbException(ADO.NET 2.0のみ)
Oracle.DataAccess.Client.OracleException
宣言
// C# public sealed class OracleException : SystemException
スレッド安全性
パブリック静的メソッドはスレッドセーフですが、インスタンス・メソッドではスレッド安全性は保証されません。
備考
複数のエラーがある場合、ODP.NETはスタック上の最初のエラー・メッセージのみを戻します。
例
// C#
using System;
using System.Data;
using Oracle.DataAccess.Client;
class OracleExceptionSample
{
static void Main()
{
string constr = "User Id=scott;Password=tiger;Data Source=oracle";
OracleConnection con = new OracleConnection(constr);
con.Open();
// Create an OracleCommand object using the connection object
OracleCommand cmd = con.CreateCommand();
try
{
cmd.CommandText = "insert into notable values (99, 'MyText')";
cmd.ExecuteNonQuery();
}
catch (OracleException ex)
{
Console.WriteLine("Record is not inserted into the database table.");
Console.WriteLine("Exception Message: " + ex.Message);
Console.WriteLine("Exception Source: " + ex.Source);
}
}
}
要件
ネームスペース: Oracle.DataAccess.Client
アセンブリ: Oracle.DataAccess.dll
Microsoft .NET Frameworkバージョン: 1.xまたは2.0
OracleExceptionメンバーは次の表にリストされています。
OracleException静的メソッド
OracleException静的メソッドのリストを、表5-57に示します。
OracleExceptionプロパティ
OracleExceptionプロパティのリストを、表5-58に示します。
表5-58 OracleExceptionプロパティ
| プロパティ | 説明 |
|---|---|
|
Oracleインスタンスへの接続の情報を含むTNS名を指定します |
|
|
Oracle Databaseによって生成される例外に関する情報を含む、1つ以上の |
|
|
|
|
|
|
|
|
例外時に出されるエラー・メッセージを指定します |
|
|
Oracleのエラー番号を指定します |
|
|
例外を引き起こすストアド・プロシージャを指定します |
|
|
エラーを生成するデータ・プロバイダの名前を指定します |
|
|
|
|
|
|
|
OracleExceptionメソッド
OracleExceptionメソッドのリストを、表5-59に示します。
表5-59 OracleExceptionメソッド
| メソッド | 説明 |
|---|---|
|
|
|
|
|
|
|
|
|
|
例外に関する情報でシリアル化可能な |
|
|
|
|
|
この例外の完全修飾名を戻します |
OracleException静的メソッドのリストを、表5-60に示します。
OracleExceptionプロパティのリストを、表5-61に示します。
表5-61 OracleExceptionプロパティ
| プロパティ | 説明 |
|---|---|
|
Oracleインスタンスへの接続の情報を含むTNS名を指定します |
|
|
Oracle Databaseによって生成される例外に関する情報を含む、1つ以上の |
|
|
|
|
|
|
|
|
例外時に出されるエラー・メッセージを指定します |
|
|
Oracleのエラー番号を指定します |
|
|
例外を引き起こすストアド・プロシージャを指定します |
|
|
エラーを生成するデータ・プロバイダの名前を指定します |
|
|
|
|
|
|
|
このプロパティは、Oracleインスタンスへの接続の情報を含むTNS名を指定します。
宣言
// C#
public string DataSource {get;}
プロパティ値
接続情報を含むTNS名
このプロパティは、Oracle Databaseによって生成される例外に関する情報を含む、1つ以上のOracleErrorオブジェクトのコレクションを指定します。
宣言
// C#
public OracleErrorCollection Errors {get;}
プロパティ値
OracleErrorCollection
備考
ErrorsプロパティにはOracleErrorオブジェクトの、少なくとも1つのインスタンスが含まれます。
Exceptionをオーバーライドします
このプロパティは、例外時に出されるエラー・メッセージを指定します。
宣言
// C#
public override string Message {get;}
プロパティ値
string
備考
MessageはErrorsコレクションの全エラーを連結したものです。各エラー・メッセージは連結され、最後の1つ以外は改行で繋げられます。
このプロパティはOracleのエラー番号を指定します。
宣言
// C#
public int Number {get;}
プロパティ値
エラー番号
備考
このエラー番号は、Oracleによって生成されたエラーの最上位レベルであり、プロバイダ固有のエラー番号である可能性があります。
このプロパティは、例外を引き起こす、格納されたプロシージャを指定します。
宣言
// C#
public string Procedure {get;}
プロパティ値
格納されたプロシージャ名
Exceptionをオーバーライドします
このプロパティは、エラーを生成するデータ・プロバイダの名前を指定します。
宣言
// C#
public override string Source {get;}
プロパティ値
データ・プロバイダの名前
OracleExceptionメソッドのリストを、表5-62に示します。
表5-62 OracleExceptionメソッド
| メソッド | 説明 |
|---|---|
|
|
|
|
|
|
|
|
|
|
例外に関する情報でシリアル化可能な |
|
|
|
|
|
この例外の完全修飾名を戻します |
Exceptionをオーバーライドします
このメソッドにより、例外に関する情報で、シリアル化可能なinfoオブジェクトを設定します。
宣言
// C# public override void GetObjectData(SerializationInfo info, StreamingContext context);
パラメータ
info
SerializationInfoオブジェクト
context
StreamingContextオブジェクト
備考
この情報には、DataSource、Message、Number、Procedure、SourceおよびStackTraceが含まれます。
Exceptionをオーバーライドします
このメソッドにより、この例外の完全修飾名、Messageプロパティのerrorメッセージ、InnerException.ToString()メッセージおよびスタック・トレースを戻します。
宣言
// C# public override string ToString();
戻り値
例外の文字列表現
例
// C#
using System;
using Oracle.DataAccess.Client;
class ToStringSample
{
static void Main()
{
string constr = "User Id=scott;Password=tiger;Data Source=oracle";
OracleConnection con = new OracleConnection(constr);
con.Open();
// Create an OracleCommand object using the connection object
OracleCommand cmd = con.CreateCommand();
try
{
cmd.CommandText = "insert into notable values (99, 'MyText')";
cmd.ExecuteNonQuery(); // This will throw an exception
}
catch (OracleException ex)
{
Console.WriteLine("Record is not inserted into the database table.");
Console.WriteLine("ex.ToString() : " + ex.ToString());
}
}
}