Exception.InnerException Property
Gets the Exception instance that caused the current exception.
Assembly: mscorlib (in mscorlib.dll)
Property Value
Type: System.ExceptionAn object that describes the error that caused the current exception. The InnerException property returns the same value as was passed into the Exception(String, Exception) constructor, or null if the inner exception value was not supplied to the constructor. This property is read-only.
Implements
_Exception.InnerExceptionWhen an exception X is thrown as a direct result of a previous exception Y, the InnerException property of X should contain a reference to Y.
Use the InnerException property to obtain the set of exceptions that led to the current exception.
You can create a new exception that catches an earlier exception. The code that handles the second exception can make use of the additional information from the earlier exception to handle the error more appropriately.
Suppose that there is a function that reads a file and formats the data from that file. In this example, as the code tries to read the file, an IOException is thrown. The function catches the IOException and throws a FileNotFoundException. The IOException could be saved in the InnerException property of the FileNotFoundException, enabling the code that catches the FileNotFoundException to examine the cause of the initial error.
The InnerException property, which holds a reference to the inner exception, is set upon initialization of the exception object.
The following example demonstrates throwing and catching an exception that references an inner exception.
Public Class AppException : Inherits Exception Public Sub New(message As String) MyBase.New(message) End Sub Public Sub New(message As String, inner As Exception) MyBase.New(message, inner) End Sub End Class Public Class Example Public Shared Sub Main() Dim testInstance As New Example() Try testInstance.CatchInner() Catch e As AppException Console.WriteLine ("In catch block of Main method.") Console.WriteLine("Caught: {0}", e.Message) If e.InnerException IsNot Nothing Then Console.WriteLine("Inner exception: {0}", e.InnerException) End If End Try End Sub Public Sub ThrowInner() Throw New AppException("Exception in ThrowInner method.") End Sub Public Sub CatchInner() Try Me.ThrowInner() Catch e As AppException Throw New AppException("Error in CatchInner caused by calling the ThrowInner method.", e) End Try End Sub End Class ' 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()
Available since 8
.NET Framework
Available since 1.1
Portable Class Library
Supported in: portable .NET platforms
Silverlight
Available since 2.0
Windows Phone Silverlight
Available since 7.0
Windows Phone
Available since 8.1