この記事は機械翻訳されています。英語版の記事を表示するには、[英語] のチェック ボックスをオンにしてください。また、テキストにマウス ポインターを合わせると、ポップアップ ウィンドウに英語のテキストを表示することもできます。
翻訳
英語

Exception.InnerException プロパティ

 

公開日: 2016年10月

現在の例外の原因となる Exception インスタンスを取得します。

名前空間:   System
アセンブリ:  mscorlib (mscorlib.dll 内)

public Exception InnerException { get; }

プロパティ値

Type: System.Exception

現在の例外を発生させたエラーを説明するオブジェクト。 InnerException プロパティは、Exception(String, Exception) コンストラクターに渡されたものと同じ値を返します。内部例外の値がコンストラクターに渡されなかった場合は null を返します。 このプロパティは読み取り専用です。

ときに例外X前の例外の直接の結果としてスローされるYInnerExceptionプロパティXへの参照を含める必要がありますYです。

InnerException プロパティを使用して、現在の例外の原因になった例外のセットを取得します。

以前の例外をキャッチする新しい例外を作成することができます。 2 つ目の例外を処理エラーより適切に処理前の例外からの追加情報に使用するコードです。

ファイルを読み取り、そのファイルからデータを書式設定する関数があるとします。 コード ファイルを読み取るしようと、この例では、IOExceptionがスローされます。 関数をキャッチ、IOExceptionをスローし、FileNotFoundExceptionです。 IOExceptionで保存することでした、InnerExceptionのプロパティ、 FileNotFoundException、キャッチするコードを有効にすると、FileNotFoundException最初のエラーの原因をチェックします。

InnerException 例外オブジェクトの初期化時に、内部例外への参照を保持するプロパティを設定します。

次の例では、スローして、内部例外を参照する例外をキャッチするを示します。

using System;

public class AppException : Exception
{
   public AppException(String message) : base (message)
   {}

   public AppException(String message, Exception inner) : base(message,inner) {}
}

public class Example
{
   public static void Main()
   {
      Example ex = new Example();

      try {
         ex.CatchInner();
      }
      catch(AppException e) {
         Console.WriteLine ("In catch block of Main method.");
         Console.WriteLine("Caught: {0}", e.Message);
         if (e.InnerException != null)
            Console.WriteLine("Inner exception: {0}", e.InnerException);
      }
   }

   public void ThrowInner ()
   {
      throw new AppException("Exception in ThrowInner method.");
   }

   public void CatchInner() 
   {
      try {
         this.ThrowInner();
      }
      catch (AppException e) {
         throw new AppException("Error in CatchInner caused by calling the ThrowInner method.", e);
      }
   }
}
// The example displays the following output:
//    In catch block of Main method.
//    Caught: Error in CatchInner caused by calling the ThrowInner method.
//    Inner exception: AppException: Exception in ThrowInner method.
//       at Example.CatchInner()

ユニバーサル Windows プラットフォーム
8 以降で使用可能
.NET Framework
1.1 以降で使用可能
ポータブル クラス ライブラリ
サポート対象: 移植可能 .NET プラットフォーム
Silverlight
2.0 以降で使用可能
Windows Phone Silverlight
7.0 以降で使用可能
Windows Phone
8.1 以降で使用可能
トップに戻る
表示: