Mono Class Library: System.Exception Overview | MembersSystem.Exception.InnerException Property |
Gets the Exception instance that caused the current Exception. [Edit]
|
An instance of Exception that describes the error that caused the current Exception. [Edit]
This property is read-only.
Note: When an Exception X is thrown as a direct result of a previous exception Y , the Exception.InnerException property of X should contain a reference to Y .The Exception.InnerException property returns the same value as was passed into the constructor, or null if the inner exception value was not supplied to the constructor.
Note: Using the Exception.InnerException property, you can obtain the set of Exceptions that led to the current Exception. Exception.GetBaseException includes an example that demonstrates this procedure.[Edit]
The following example demonstrates throwing and catching an Exception that references an inner Exception.
C# Example using System; public class MyAppException:ApplicationException { public MyAppException (String message) : base (message) {} public MyAppException (String message, Exception inner) : base(message,inner) {} } public class ExceptExample { 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); } } } public class Test { public static void Main() { ExceptExample testInstance = new ExceptExample(); try { testInstance.CatchInner(); } catch(Exception e) { Console.WriteLine ("In Main catch block. Caught: {0}", e.Message); Console.WriteLine ("Inner Exception is {0}",e.InnerException); } } }The output is
Example In Main catch block. Caught: Error caused by trying ThrowInner. Inner Exception is MyAppException: ExceptExample inner exception at ExceptExample.ThrowInner() at ExceptExample.CatchInner()
Namespace: System
Assembly: mscorlib (in mscorlib.dll)
Assembly Versions: 1.0.5000.0, 2.0.0.0