MSDN Library
콘텐츠의 테이블 축소
콘텐츠의 테이블 확장
정보
요청한 주제가 아래에 표시됩니다. 그러나 이 주제는 이 라이브러리에 포함되지 않습니다.

Exception.InnerException 속성

2013-12-13

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

Namespace:  System
어셈블리:  mscorlib(mscorlib.dll)

public Exception InnerException { get; }

속성 값

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

이전 예외 Y의 직접적인 결과로 X가 발생될 때, 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

Windows Phone

표시:
© 2016 Microsoft