다음을 통해 공유


예외 클래스 및 속성

Exception 클래스는 예외가 상속되는 기본 클래스입니다. 예를 들어 InvalidCastException 클래스 계층 구조는 다음과 같습니다.

Object
  Exception
    SystemException
      InvalidCastException

클래스에는 Exception 예외를 더 쉽게 이해할 수 있도록 하는 다음과 같은 속성이 있습니다.

속성 이름 설명
Data IDictionary 키-값 쌍으로 임의의 데이터를 저장하는 객체입니다.
HelpLink 예외의 원인에 대한 광범위한 정보를 제공하는 도움말 파일에 URL(또는 URN)을 보관할 수 있습니다.
InnerException 이 속성은 예외를 처리하는 동안 일련의 예외를 만들고 보존하는 데 사용할 수 있습니다. 이를 사용하여 이전에 catch된 예외를 포함하는 새 예외를 만들 수 있습니다. 원래 예외는 속성의 두 번째 예외에 InnerException 의해 캡처될 수 있으므로 두 번째 예외를 처리하는 코드가 추가 정보를 검사할 수 있습니다. 예를 들어 형식이 잘못 지정된 인수를 받는 메서드가 있다고 가정해 보겠습니다. 코드는 인수를 읽으려고 시도하지만, 예외가 던져집니다. 메서드는 예외를 catch하고 FormatException을(를) 던집니다. 예외를 발생시키는 이유를 호출자가 더 잘 파악할 수 있도록, 메서드가 보조 루틴에서 발생한 예외를 잡아내고 나서 발생한 오류를 더 잘 나타내는 예외를 발생시키는 것이 바람직할 때가 있습니다. 내부 예외 참조를 원래 예외로 설정할 수 있는 더 의미 있는 새 예외를 만들 수 있습니다. 그러면 더 의미 있는 예외가 호출자에게 던져질 수 있습니다. 이 기능을 사용하면 먼저 throw된 예외로 끝나는 일련의 연결된 예외를 만들 수 있습니다.
Message 예외의 원인에 대한 세부 정보를 제공합니다.
Source 오류를 발생시키는 애플리케이션 또는 개체의 이름을 가져오거나 설정합니다.
StackTrace 오류가 발생한 위치를 확인하는 데 사용할 수 있는 스택 추적을 포함합니다. 디버깅 정보를 사용할 수 있는 경우 스택 추적에는 원본 파일 이름 및 프로그램 줄 번호가 포함됩니다.

대부분의 클래스는 Exception을(를) 상속하지만 추가 멤버를 구현하거나 추가 기능을 제공하지 않습니다. 그들은 단순히 Exception을(를) 상속할 뿐입니다. 따라서 예외에 대한 가장 중요한 정보는 예외 클래스의 계층 구조, 예외 이름 및 예외에 포함된 정보를 찾을 수 있습니다.

Exception에서 파생된 개체만 throw하고 catch하는 것이 좋지만, Object 클래스에서 파생된 개체는 예외로 throw할 수 있습니다. 모든 언어가 Exception에서 파생되지 않은 오브젝트를 throw하고 catch하는 것을 지원하지는 않습니다.

참고하십시오