エクスポート (0) 印刷
すべて展開
情報
要求されたトピックは次のとおりです。しかし、このトピックはこのライブラリには含まれていません。

Exception.InnerException プロパティ

2013/12/12

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

Namespace:  System
アセンブリ:  mscorlib (mscorlib.dll 内)

public Exception InnerException { get; }

プロパティ値

型: System.Exception
現在の例外を発生させたエラーを説明する Exception のインスタンス。InnerException プロパティは、コンストラクターに渡されたものと同じ値を返します。ただし、内部例外の値がコンストラクターに渡されなかった場合は、null 参照 (Visual Basic では Nothing) を返します。このプロパティは読み取り専用です。

ある例外 X が先に発生した例外 Y の直接の結果としてスローされるとき、XInnerException プロパティには Y への参照が格納されます。

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

以前の例外をキャッチする新しい例外を作成できます。後に発生した例外を処理するコードは、先に発生した例外からの追加情報を使用して、より的確にエラーを処理できます。

ファイルを読み取り、そのファイルのデータの書式を指定する関数があるとします。この例では、ファイルの読み取りを試みるコードとして、IOException がスローされます。この関数は、IOException を受け取り、FileNotFoundException をスローします。IOExceptionFileNotFoundExceptionInnerException プロパティに保存でき、それにより、初期エラーの原因を検査するための FileNotFoundException を受け取るコードが有効になります。

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

内部例外を参照する例外をスローしたり受け取る例を次に示します。

メモメモ:

この例を実行するには、「Windows Phone での静的 TextBlock コントロールのあるコード例のビルド」を参照してください。


using System;
public class Example
{
    public static void Demo(System.Windows.Controls.TextBlock outputBlock)
    {
        ExceptExample testInstance = new ExceptExample();
        try
        {
            testInstance.CatchInner();
        }
        catch (Exception e)
        {
            outputBlock.Text += String.Format("Exceptino caught: {0}", e.Message) + "\n";
            outputBlock.Text += String.Format("Inner Exception is {0}", e.InnerException) + "\n";
        }
    }
}

public class MyException : ArgumentException
{
    public MyException(String message)
        : base(message)
    { }
    public MyException(String message, Exception inner) : base(message, inner) { }
}
public class ExceptExample
{
    public void ThrowInner()
    {
        throw new MyException("MyException inner exception");
    }
    public void CatchInner()
    {
        try
        {
            this.ThrowInner();
        }
        catch (Exception e)
        {
            throw new MyException("Error caused by trying ThrowInner.", e);
        }
    }
}


このコードによって、次の出力が生成されます。

In Main
  catch block. Caught: Error caused by trying ThrowInner. Inner Exception is
  MyAppException: ExceptExample inner exception at ExceptExample.ThrowInner() at
  ExceptExample.CatchInner()

Windows Phone OS

サポート: 8.0, 7.1, 7.0

表示:
© 2015 Microsoft