私はしばらく検索してきましたが、簡単な言葉で説明を見つけることができませんでした。私はinner exception
が何であるかをC#で知る必要があります。単純な例を持つC#.netの内部例外
msdnでは説明していますが、例はあまり明確ではありません。私は簡単な例で説明が必要です。ありがとう
私はしばらく検索してきましたが、簡単な言葉で説明を見つけることができませんでした。私はinner exception
が何であるかをC#で知る必要があります。単純な例を持つC#.netの内部例外
msdnでは説明していますが、例はあまり明確ではありません。私は簡単な例で説明が必要です。ありがとう
InnerExceptionは例外のプロパティです。一連の例外がある場合、最新の例外はInnerExceptionプロパティで以前の例外を取得できます。 http://www.c-sharpcorner.com/uploadfile/puranindia/innerexception-in-C-Sharp/
インナー例外はNEST例外にあなたを許す:で
を参照してください。内部例外が新しい例外例外をラップするために使用される
public void ThrowInner()
{
throw new MyAppException("ExceptExample inner exception");
}
public void CatchInner()
{
try
{
this.ThrowInner();
}
catch (Exception e)
{
throw new MyAppException("Error caused by trying ThrowInner.",e);
}
}
。ほとんどの場合、これを行う必要はありません。しかし、あなたが注文を提出するクラスを持っているとします。そのコードは他のクラスを呼び出し、その内部のどこかでNullReferenceException
をスローします。
注文をしようとすると、ぼんやりとしたNullReferenceException
が表示されます。あなたはこれを行う可能性がありますため提出が何を得る失敗したときに今
try
{
SubmitOrder(order);
}
catch(Exception ex)
{
throw new OrderSubmitException("An error occurred while placing the order", ex);
}
をそれはOrderSubmitException
だ、ちょうどNullReferenceException
ではありません。あなたのログにその情報が表示されたり、アプリケーション内でそれを把握すると、注文時に例外がスローされたことを伝えるのが簡単になります。
しかし、本当に重要な詳細は、新しい例外のInnerException
プロパティにあります(元の例外をコンストラクタに渡したためです)。OrderSubmitException
がありますが、 stacktrace、InnerException
にあります。
実生活では、そうする必要はあまりありません。そのような例外をラップするときはほとんどの場合、不要です。元の例外にはスタックトレースがあり、それで十分です。
多くの場合、何か他のものによってスローされた例外を調べるときにはInnerException
が気になります。例外に十分な詳細が含まれていない場合は、InnerException
に詳細があり、それ自体にInnerException
が含まれていることがあります。
:例外Xが前の例外Y. 例の直接の結果としてスローされる
var exception1 = new Exception("This is the inner exception"); var exception2 = new Exception("This is the outer exception",exception1);