プライマリ・コンテンツに移動
Oracle® Data Provider for .NET開発者ガイド
ODAC 12c リリース4 (12.1.0.2) for Microsoft Windows
E72575-01
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

OracleExceptionクラス

OracleExceptionクラスは、Oracle Data Provider for .NETでエラーが発生したときに表示される例外を表します。各OracleExceptionオブジェクトには、エラーまたは警告について説明するErrorプロパティ内のOracleErrorオブジェクトが少なくとも1つ含まれます。

クラスの継承

System.Object

  System.Exception

    System.SystemException

      System.Runtime.InteropServices.ExternalException

        System.Data.Common.DbException

         Oracle.DataAccess.Client.OracleException

宣言

// C#
public sealed class OracleException : SystemException

要件

プロバイダ ODP.NET管理対象外ドライバ ODP.NET管理対象ドライバ
アセンブリ Oracle.DataAccess.dll Oracle.ManagedDataAccess.dll
ネームスペース Oracle.DataAccess.Client Oracle.ManagedDataAccess.Client
.NET Framework 3.5, 4.0, 4.5, 4.6 4.0, 4.5, 4.6

スレッド安全性

パブリック静的メソッドはスレッドセーフですが、インスタンス・メソッドではスレッド安全性は保証されません。

備考

複数のエラーがある場合、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);
    }
  }
}

OracleExceptionメンバー

OracleExceptionメンバーは次の表にリストされています。

OracleException静的メソッド

OracleException静的メソッドを、表6-77にリストします。

表6-77 OracleException静的メソッド

メソッド 説明

Equals

System.Objectからの継承(オーバーロード)


OracleExceptionプロパティ

OracleExceptionプロパティを、表6-78にリストします。

表6-78 OracleExceptionプロパティ

プロパティ 説明

DataSource

Oracleインスタンスへの接続の情報を含むTNS名を指定します

Errors

Oracle Databaseによって生成される例外に関する情報を含む、1つ以上のOracleErrorオブジェクトのコレクションを指定します

HelpLink

System.Exceptionからの継承

InnerException

System.Exceptionからの継承

IsRecoverable

この例外を発生させた現行の操作の再試行が成功するかどうかを指定します

Message

例外時に出されるエラー・メッセージを指定します

Number

Oracleのエラー番号を指定します

OracleLogicalTransaction

トランザクション・ガードを使用している際に、リカバリ可能エラーのためにOracleLogicalTransactionオブジェクトを戻します

Procedure

例外を引き起こすストアド・プロシージャを指定します

Source

エラーを生成するデータ・プロバイダの名前を指定します

StackTrace

System.Exceptionからの継承

TargetSite

System.Exceptionからの継承


OracleExceptionメソッド

OracleExceptionメソッドを、表6-79にリストします。

表6-79 OracleExceptionメソッド

メソッド 説明

Equals

System.Objectからの継承(オーバーロード)

GetBaseException

System.Exceptionからの継承

GetHashCode

System.Objectからの継承

GetObjectData

例外に関する情報でシリアル化可能なinfoオブジェクトを設定します

GetType

System.Objectからの継承

ToString

この例外の完全修飾名を戻します


OracleException静的メソッド

OracleException静的メソッドを、表6-80にリストします。

表6-80 OracleException静的メソッド

メソッド 説明

Equals

System.Objectからの継承(オーバーロード)


OracleExceptionプロパティ

OracleExceptionプロパティを、表6-81にリストします。

表6-81 OracleExceptionプロパティ

プロパティ 説明

DataSource

Oracleインスタンスへの接続の情報を含むTNS名を指定します

Errors

Oracle Databaseによって生成される例外に関する情報を含む、1つ以上のOracleErrorオブジェクトのコレクションを指定します

HelpLink

System.Exceptionからの継承

InnerException

System.Exceptionからの継承

IsRecoverable

この例外を発生させた現行の操作の再試行が成功するかどうかを指定します

Message

例外時に出されるエラー・メッセージを指定します

Number

Oracleのエラー番号を指定します

OracleLogicalTransaction


トランザクション・ガードを使用している際に、リカバリ可能エラーのためにOracleLogicalTransactionオブジェクトを戻します

Procedure

例外を引き起こすストアド・プロシージャを指定します

Source

エラーを生成するデータ・プロバイダの名前を指定します

StackTrace

System.Exceptionからの継承

TargetSite

System.Exceptionからの継承


DataSource

このプロパティは、Oracleインスタンスへの接続の情報を含むTNS名を指定します。

宣言

// C#
public string DataSource {get;}

プロパティ値

接続情報を含むTNS名

Errors

このプロパティは、Oracle Databaseによって生成される例外に関する情報を含む、1つ以上のOracleErrorオブジェクトのコレクションを指定します。

宣言

// C#
public OracleErrorCollection Errors {get;}

プロパティ値

OracleErrorCollection

備考

ErrorsプロパティにはOracleErrorオブジェクトの、少なくとも1つのインスタンスが含まれます。

IsRecoverable

このプロパティは、この例外を発生させた現行の操作の再試行が成功するかどうかを指定します。

宣言

// C#
public bool IsRecoverable {get;}

プロパティ値

bool

備考

データベースがネットワーク障害などで停止すると、セッションは使用不可になり、クライアントはエラー・コードを受信します。クライアントでは、進行中の操作がコミットされたか、または再送信する必要があるかについての判断が困難である可能性があります。Oracleでは、進行中のデータベース操作をリカバリできるかどうかについて、IsRecoverableプロパティを使用して自動的に判断します。停止後にIsRecoverableがtrueを戻した場合、アプリケーションは現行の操作ステータスを取得してトランザクションを完了できます。IsRecoverableがfalseを戻した場合、アプリケーションは現行の操作をロールバックしてトランザクションを再送信できます。

このプロパティは、トランザクション・ガードと組み合せてよく使用されます。

Message

Exceptionをオーバーライドします

このプロパティは、例外時に出されるエラー・メッセージを指定します。

宣言

// C#
public override string Message {get;}

プロパティ値

string

備考

MessageErrorsコレクションの全エラーを連結したものです。各エラー・メッセージは連結され、最後の1つ以外は改行で繋げられます。

Number

このプロパティはOracleのエラー番号を指定します。

宣言

// C#
public int Number {get;}

プロパティ値

エラー番号

備考

このエラー番号は、Oracleによって生成されたエラーの最上位レベルであり、プロバイダ固有のエラー番号である可能性があります。

OracleLogicalTransaction

このプロパティは、トランザクション・ガードを使用する際に、リカバリ可能エラーのためにOracleLogicalTransactionオブジェクトを戻します。

宣言

// C#
public OracleLogicalTransaction OracleLogicalTransaction {get;}

プロパティ値

OracleLogicalTransaction

備考

次の両方の条件に合致する場合、OracleLogicalTransactionはnull以外です。

  • トランザクション・ガードがサービス上で使用可能

  • 例外がリカバリ可能エラー

OracleLogicalTransactionは、表示している次の2つのプロパティを検証することで、トランザクション結果の判断に使用できます: CommittedおよびUserCallCompleted。結果が不明の場合、CommittedおよびUserCallCompletedはnullに設定されます。

リカバリ可能なエラーがODP.NETによって判定できず、接続が分散トランザクションに参加していない場合、OracleLogicalTransactionオブジェクトのOracleLogicalTransactionIdプロパティはnull以外になり、データベース/サービスが稼働している場合、アプリケーションが明示的にOracleLogicalTransaction.GetOutcomeスタティック・メソッドを呼び出すことで結果を判断するのに使用できます。

Procedure

このプロパティは、例外を引き起こす、格納されたプロシージャを指定します。

宣言

// C#
public string Procedure {get;}

プロパティ値

格納されたプロシージャ名

Source

Exceptionをオーバーライドします

このプロパティは、エラーを生成するデータ・プロバイダの名前を指定します。

宣言

// C#
public override string Source {get;}

プロパティ値

データ・プロバイダの名前

OracleExceptionメソッド

OracleExceptionメソッドを、表6-82にリストします。

表6-82 OracleExceptionメソッド

メソッド 説明

Equals

System.Objectからの継承(オーバーロード)

GetBaseException

System.Exceptionからの継承

GetHashCode

System.Objectからの継承

GetObjectData

例外に関する情報でシリアル化可能なinfoオブジェクトを設定します

GetType

System.Objectからの継承

ToString

この例外の完全修飾名を戻します


GetObjectData

Exceptionをオーバーライドします

このメソッドにより、例外に関する情報で、シリアル化可能なinfoオブジェクトを設定します。

宣言

// C#
public override void GetObjectData(SerializationInfo info, StreamingContext 
    context);

パラメータ

  • info

    SerializationInfoオブジェクト

  • context

    StreamingContextオブジェクト

備考

この情報には、DataSourceMessageNumberProcedureSourceおよびStackTraceが含まれます。

ToString

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());
    }
  }
}