COMException 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
COM 메서드 호출에서 인식할 수 없는 HRESULT가 반환될 때 throw되는 예외입니다.
public ref class COMException : Exception
public ref class COMException : System::Runtime::InteropServices::ExternalException
public class COMException : Exception
public class COMException : System.Runtime.InteropServices.ExternalException
[System.Serializable]
public class COMException : System.Runtime.InteropServices.ExternalException
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public class COMException : System.Runtime.InteropServices.ExternalException
type COMException = class
inherit Exception
type COMException = class
inherit ExternalException
[<System.Serializable>]
type COMException = class
inherit ExternalException
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type COMException = class
inherit ExternalException
Public Class COMException
Inherits Exception
Public Class COMException
Inherits ExternalException
- 상속
- 상속
- 파생
- 특성
설명
COMException 클래스는 COM 메서드 호출에서 인식할 수 없는 HRESULT가 반환될 때 throw되는 예외입니다.
공용 언어 런타임은 잘 알려진 HRESULT를 .NET 예외로 변환하여 COM 개체가 관리되는 클라이언트에 의미 있는 오류 정보를 반환할 수 있도록 합니다. HRESULT-예외 매핑은 특정 HRESULT를 관리되지 않는 클라이언트에 반환하여 다른 방향으로도 작동합니다. 매핑 세부 정보는 HRESULT 및 예외를 매핑하는 방법을 참조하세요.
런타임이 익숙하지 않은 HRESULT(특정 예외가 없는 HRESULT)를 만나면 COMException 클래스의 인스턴스가 던져집니다. 이 모든 용도의 예외는 예외와 동일한 멤버를 노출하고 호출 수신자가 반환한 HRESULT를 포함하는 공용 ErrorCode 속성을 상속합니다. 런타임에 오류 메시지를 사용할 수 있는 경우( IErrorInfo 인터페이스 또는 Visual Basic의 Err 개체 또는 운영 체제에서 가져온 경우) 메시지가 호출자에게 반환됩니다. 그러나 COM 구성 요소 개발자가 오류 메시지를 포함하지 못하는 경우 런타임은 메시지 문자열 대신 8자리 HRESULT를 반환합니다. HRESULT를 사용하면 호출자가 제네릭 예외의 원인을 확인할 수 있습니다.
COMException 예외 처리
다음은 예외 문제를 해결하기 위한 몇 가지 고려 사항입니다 COMException .
ErrorCode 속성을 확인하십시오. 런타임이 익숙하지 않은 HRESULT를 발견하여 COMException 예외를 throw하면, ErrorCode 속성에는 오류 메시지가 포함되거나, 오류 메시지를 사용할 수 없는 경우 8자리 HRESULT 값이 포함됩니다. 오류 메시지 또는 HRESULT 값은 예외의 원인을 확인하는 데 도움이 될 수 있습니다.
HRESULT 값 목록은 공통 HRESULT 값을 참조하세요.
Microsoft Office 개체의 메서드에 늦게 바인딩된 인수를 전달하는 경우 해당 개체가 COMException COM 개체인 경우 예외가 발생할 수 있습니다. 지연 바인더는 이러한 메서드 호출에 ByRef 매개 변수가 포함되며, 전달하는 속성에 set 접근자가 있다고 가정합니다. 속성이 없는 경우 .NET은 예외(MissingMethodExceptionHRESULT 포함)를 생성합니다CORE_E_MISSINGMETHOD. 이 동작을 해결하려면 초기 바인딩된 개체를 사용하거나 개체의 속성 대신 변수를 전달합니다.
COM은 Visual Studio와 호스팅 프로세스 간에 통신하는 데 사용됩니다. 코드가 실행되기 전에 사용되므로 CoInitializeSecurity 를 호출하면 이 예외가 throw됩니다. 경우에 따라 Visual Studio를 관리자로 실행하면 문제가 해결될 수 있습니다. 호스팅 프로세스를 사용하지 않도록 설정할 수도 있습니다.
COMException 예외를 던지다
클래스를 COMException 사용하여 관리되지 않는 클라이언트에 특정 HRESULT를 반환할 수 있지만 특정 .NET 예외를 throw하는 것이 제네릭 예외를 사용하는 것보다 낫습니다. 관리되는 클라이언트와 관리되지 않는 클라이언트가 모두 .NET 객체를 사용할 수 있다고 생각하면, 관리되는 호출자에게 HRESULT를 던지는 것은 예외를 던지는 것만큼 명확하지 않습니다.
생성자
| Name | Description |
|---|---|
| COMException() |
기본값을 사용하여 클래스의 새 인스턴스를 COMException 초기화합니다. |
| COMException(SerializationInfo, StreamingContext) |
사용되지 않음.
serialization 데이터에서 클래스의 새 인스턴스를 COMException 초기화합니다. |
| COMException(String, Exception) |
지정된 오류 메시지와 이 예외의 COMException 원인인 내부 예외에 대한 참조를 사용하여 클래스의 새 인스턴스를 초기화합니다. |
| COMException(String, Int32) |
지정된 메시지 및 오류 코드를 사용하여 클래스의 COMException 새 인스턴스를 초기화합니다. |
| COMException(String) |
지정된 메시지를 사용하여 클래스의 COMException 새 인스턴스를 초기화합니다. |
속성
| Name | Description |
|---|---|
| Data |
예외에 대한 추가 사용자 정의 정보를 제공하는 키/값 쌍의 컬렉션을 가져옵니다. (다음에서 상속됨 Exception) |
| ErrorCode |
오류의 |
| HelpLink |
이 예외와 연결된 도움말 파일에 대한 링크를 가져오거나 설정합니다. (다음에서 상속됨 Exception) |
| HResult |
특정 예외에 할당된 코딩된 숫자 값인 HRESULT를 가져오거나 설정합니다. (다음에서 상속됨 Exception) |
| InnerException |
현재 예외를 Exception 발생시킨 인스턴스를 가져옵니다. (다음에서 상속됨 Exception) |
| Message |
현재 예외를 설명하는 메시지를 가져옵니다. (다음에서 상속됨 Exception) |
| Source |
오류를 발생시키는 애플리케이션 또는 개체의 이름을 가져오거나 설정합니다. (다음에서 상속됨 Exception) |
| StackTrace |
호출 스택에서 직접 실행 프레임의 문자열 표현을 가져옵니다. (다음에서 상속됨 Exception) |
| TargetSite |
현재 예외를 throw하는 메서드를 가져옵니다. (다음에서 상속됨 Exception) |
메서드
| Name | Description |
|---|---|
| Equals(Object) |
지정된 개체가 현재 개체와 같은지 여부를 확인합니다. (다음에서 상속됨 Object) |
| GetBaseException() |
파생 클래스에서 재정의되는 경우 하나 이상의 후속 예외의 근본 원인인 값을 반환 Exception 합니다. (다음에서 상속됨 Exception) |
| GetHashCode() |
기본 해시 함수로 사용됩니다. (다음에서 상속됨 Object) |
| GetObjectData(SerializationInfo, StreamingContext) |
사용되지 않음.
파생 클래스에서 재정의되는 경우 예외에 SerializationInfo 대한 정보를 사용하여 설정합니다. (다음에서 상속됨 Exception) |
| GetType() |
현재 인스턴스의 런타임 형식을 가져옵니다. (다음에서 상속됨 Exception) |
| MemberwiseClone() |
현재 Object단순 복사본을 만듭니다. (다음에서 상속됨 Object) |
| ToString() |
예외의 내용을 문자열로 변환합니다. |
| ToString() |
현재 예외의 문자열 표현을 만들고 반환합니다. (다음에서 상속됨 Exception) |
이벤트
| Name | Description |
|---|---|
| SerializeObjectState |
사용되지 않음.
예외에 대한 직렬화된 데이터를 포함하는 예외 상태 개체를 만들기 위해 예외가 serialize될 때 발생합니다. (다음에서 상속됨 Exception) |