COM Interop 예외 처리
관리 코드와 비관리 코드를 함께 사용하여 예외를 처리합니다. 메서드가 관리 코드에서 예외를 throw하면 공용 언어 런타임이 HRESULT를 COM 개체에 전달할 수 있습니다. 메서드가 비관리 코드에서 오류 HRESULT를 반환함으로써 실패하면 런타임에서는 관리 코드가 catch할 수 있는 예외를 throw합니다.
런타임은 자동으로 COM interop에서 더 구체적인 예외로 HRESULT를 매핑합니다. 예를 들어 E_ACCESSDENIED가 UnauthorizedAccessException이 되고, E_OUTOFMEMORY가 OutOfMemoryException이 됩니다.
HRESULT가 사용자 지정 결과이거나 런타임에 인식되지 않으면 런타임에서는 제네릭 COMException을 클라이언트에 전달합니다. COMException의 ErrorCode 속성에는 HRESULT 값이 포함됩니다.
IErrorInfo 작업
COM에서 관리 코드로 오류가 전달되면 런타임에서는 예외 개체를 오류 정보로 채웁니다. IErrorInfo를 지원하고 HRESULTS를 반환하는 COM 개체는 관리 코드 예외에 이 정보를 제공합니다. 예를 들어 런타임에서는 COM 오류에서 예외의 Message 속성으로 설명을 매핑합니다. HRESULT가 추가 오류 정보를 제공하지 않으면 런타임에서는 대부분 예외 속성을 기본값으로 채웁니다.
비관리 코드에서 메서드가 실패하면 관리 코드 세그먼트에 예외가 전달될 수 있습니다. HRESULT 및 예외 항목에는 HRESULT가 런타임 예외 개체에 매핑되는 방식을 보여주는 표가 있습니다.
참고 항목
.NET
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기