ILanguageExceptionTransform::GetTransformedRestrictedErrorInfo 메서드(restrictederrorinfo.h)

변환된 제한된 오류 정보를 검색합니다.

구문

HRESULT GetTransformedRestrictedErrorInfo(
  [out] IRestrictedErrorInfo **restrictedErrorInfo
);

매개 변수

[out] restrictedErrorInfo

제한된 오류 정보를 포함하는 IRestrictedErrorInfo 개체에 대한 포인터입니다.

반환 값

메서드가 성공하면 S_OK를 반환하고, 그러지 않으면 HRESULT 오류 코드를 반환합니다.

설명

GetTransformedRestrictedErrorInfo 는 일반적으로 예외로부터 모든 컨텍스트를 시스템에 노출하기 위해 언어 프로젝션에 의해 구현됩니다. 특히 다른 예외를 catch하는 catch 처리기의 컨텍스트에서 throw된 예외의 정보를 노출합니다. throw된 예외는 catch된 예외의 "변환"으로 간주되며 일부 프로젝션의 내부 예외로도 간주됩니다. 이를 통해 개발자는 변환 전에 원래 예외가 발생한 이유에 대한 인사이트를 얻을 수 있습니다.

구현될 때 시스템은 GetTransformedRestrictedErrorInfo 호출에서 검색된 IRestrictedErrorInfo를 사용하여 IRestrictedErrorInfo 개체의 또 다른 연결된 목록을 만듭니다. 이러한 개체는 CapturePropagationContext에서 캡처된 전파에 대해 보관된 예외와 함께 크래시 덤프에서 보관된 예외로 에 표시됩니다. 다른 예외와 마찬가지로 GetPreviousLanguageExceptionErrorInfo를 사용하여 변환 목록에서 이러한 개체를 트래버스하고 액세스할 수 있습니다.

예제

[ 
    uuid(7974CD8B-A9EF-4CC4-9A7D-5793CCE30734), 
    pointer_default(unique), 
    object 
] 
interface IFooExceptionInfo : IUnknown 
{ 
    ... 
    HRESULT SetTranformedException(IFooException* exception); 
} 

class FooExceptionInfo : public Microsoft::WRL::RuntimeClass< 
    Microsoft::WRL::RuntimeClassFlags< 
    Microsoft::WRL::RuntimeClassType::ClassicCom>, 
    IFooExceptionInfo, 
    ILanguageExceptionTransform> 
{ 
    ... 
    ... 
private: 
    HRESULT _hr; 
    Microsoft::WRL::Wrappers::HString _message; 
    ComPtr<IFooException> _transformedException; 
public: 
    HRESULT SetTranformedException(IFooException* exception) 
    { 
        _transformedException = exception; 
        return S_OK; 
    } 

    HRESULT GetTransformedRestrictedErrorInfo(IRestrictedErrorInfo** restrictedErrorInfo) 
    { 
        return _transformedException->GetRestrictedErrorForException( 
                   restrictedErrorInfo); 
    } 
} 
[ 
    uuid(52394734-6600-4835-8E17-60BDEDB14B81), 
    pointer_default(unique), 
    object 
] 
interface IFooException : IUnknown 
{ 
    ... 
    HRESULT GetRestrictedErrorForException(IRestrictedErrorInfo** restrictedErrorInfo); 
    HRESULT GetExceptionInfo(IFooExceptionInfo** exceptionInfo); 
} 

class FooException : public Microsoft::WRL::RuntimeClass< 
    Microsoft::WRL::RuntimeClassFlags< 
    Microsoft::WRL::RuntimeClassType::ClassicCom>, 
    IFooException 
    ...> 
{ 
    ... 
    ... 
private: 
    ComPtr<IFooExceptionInfo> _exceptionInfo; 
    ComPtr<IRestrictedErrorInfo> _restrictedErrorInfo;  
public: 
    HRESULT GetRestrictedErrorForException(IRestrictedErrorInfo** restrictedErrorInfo) 
    { 
        return _restrictedErrorInfo.CopyTo(restrictedErrorInfo); 
    } 

    HRESULT GetExceptionInfo(IFooExceptionInfo** exceptionInfo) 
    { 
        return _exceptionInfo.CopyTo(exceptionInfo); 
    } 
} 
void OriginateErrorInfoForThrowWithCaughtException(IFooException* exception, IFooException* caughtException) 
{ 
    ComPtr<IFooExceptionInfo> exceptionInfo;     if(SUCCEEDED(exception->GetExceptionInfo(&exceptionInfo))) 
    { 
        exceptionInfo->SetTranformedException(caughtException); 
        exception->OriginateErrorInfoForThrow(); 
    } 
} 

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 10, 버전 1703 [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2016 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 restrictederrorinfo.h

추가 정보

ILanguageExceptionTransform