다음을 통해 공유


Exception.InnerException 속성

현재 예외를 발생시키는 Exception 인스턴스를 가져옵니다.

네임스페이스: System
어셈블리: mscorlib(mscorlib.dll)

구문

‘선언
Public ReadOnly Property InnerException As Exception
‘사용 방법
Dim instance As Exception
Dim value As Exception

value = instance.InnerException
public Exception InnerException { get; }
public:
virtual property Exception^ InnerException {
    Exception^ get () sealed;
}
/** @property */
public final Exception get_InnerException ()
public final function get InnerException () : Exception

속성 값

현재 예외를 발생시키는 오류를 설명하는 Exception의 인스턴스입니다. InnerException 속성에서는 생성자에 전달된 값과 같은 값을 반환하거나 생성자에 내부 예외 값이 제공되지 않는 경우 null 참조(Visual Basic일 경우 Nothing)를 반환합니다. 이 속성은 읽기 전용입니다.

설명

이전 예외 Y의 직접적인 결과로 X가 발생될 때, X의 InnerException 속성에는 Y에 대한 참조가 들어 있어야 합니다.

InnerException 속성을 사용하여 현재 예외에 도달하는 예외의 집합을 얻습니다.

이전 예외를 catch하는 새 예외를 만들 수 있습니다. 둘째 예외를 처리하는 코드는 이전 예외의 추가 정보를 사용하여 오류를 더 적절하게 처리할 수 있습니다.

파일을 읽고 해당 파일로부터 데이터를 형식화하는 함수를 가정합니다. 이 예제에서는 코드가 파일을 읽으려고 할 때, IOException이 throw됩니다. 이 함수는 IOException을 catch하고 FileNotFoundException을 throw합니다. IOExceptionFileNotFoundExceptionInnerException 속성에 저장될 수 있으며 FileNotFoundException을 catch하는 코드에서 초기 오류의 원인이 무엇인지를 검사할 수 있도록 합니다.

내부 예외에 대한 참조를 가지고 있는 InnerException 속성은 예외 개체를 초기화할 때 설정됩니다.

예제

다음 예제에서는 내부 예외를 참조하는 예외를 throw하고 catch하는 것에 대해 설명합니다.

Imports System

Public Class MyAppException
   Inherits ApplicationException
   
   Public Sub New(message As [String])
      MyBase.New(message)
   End Sub 'New
   
   Public Sub New(message As [String], inner As Exception)
      MyBase.New(message, inner)
   End Sub 'New
End Class 'MyAppException

Public Class ExceptExample
   
   Public Sub ThrowInner()
      Throw New MyAppException("ExceptExample inner exception")
   End Sub 'ThrowInner
   
   Public Sub CatchInner()
      Try
         Me.ThrowInner()
      Catch e As Exception
         Throw New MyAppException("Error caused by trying ThrowInner.", e)
      End Try
   End Sub 'CatchInner
End Class 'ExceptExample

Public Class Test
   
   Public Shared Sub Main()
      Dim testInstance As New ExceptExample()
      Try
         testInstance.CatchInner()
      Catch e As Exception
         Console.WriteLine("In Main catch block. Caught: {0}", e.Message)
         Console.WriteLine("Inner Exception is {0}", e.InnerException)
      End Try
   End Sub 'Main
End Class 'Test
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);
         }
      }
}
using namespace System;
public ref class MyAppException: public ApplicationException
{
public:
   MyAppException( String^ message )
      : ApplicationException( message )
   {}

   MyAppException( String^ message, Exception^ inner )
      : ApplicationException( message, inner )
   {}

};

public ref class ExceptExample
{
public:
   void ThrowInner()
   {
      throw gcnew MyAppException( "ExceptExample inner exception" );
   }

   void CatchInner()
   {
      try
      {
         this->ThrowInner();
      }
      catch ( Exception^ e ) 
      {
         throw gcnew MyAppException( "Error caused by trying ThrowInner.",e );
      }

   }

};

int main()
{
   ExceptExample^ testInstance = gcnew 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 );
   }

}
import System.*;
public class MyAppException extends ApplicationException
{
    public MyAppException(String message)
    {
      super(message);
    } //MyAppException

    public MyAppException(String message, System.Exception inner)
    {
      super(message, inner);
    } //MyAppException
} //MyAppException

public class ExceptExample
{
    public void ThrowInner()throws MyAppException
    {
        throw new MyAppException("ExceptExample inner exception");
    } //ThrowInner

    public void CatchInner()throws MyAppException
    {
        try {
            this.ThrowInner();
        }
        catch (System.Exception e) {
            throw new MyAppException("Error caused by trying ThrowInner.", e);
        }
    } //CatchInner
} //ExceptExample

public class Test
{
    public static void main(String[] args)
    {
        ExceptExample testInstance = new ExceptExample();
        try {
            testInstance.CatchInner();
        }
        catch (System.Exception e) {
            Console.WriteLine("In main catch block. Caught: {0}", 
                e.get_Message());
            Console.WriteLine("Inner Exception is {0}", 
                e.get_InnerException());
        }
    } //main
} //Test

이 코드는 다음과 같이 출력됩니다.

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

플랫폼

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework에서 모든 플래폼의 모든 버전을 지원하지는 않습니다. 지원되는 버전의 목록은 시스템 요구 사항을 참조하십시오.

버전 정보

.NET Framework

2.0, 1.1, 1.0에서 지원

.NET Compact Framework

2.0, 1.0에서 지원

참고 항목

참조

Exception 클래스
Exception 멤버
System 네임스페이스