共用方式為


ILanguageExceptionTransform::GetTransformedRestrictedErrorInfo 方法 (restrictederrorinfo.h)

擷取已轉換的受限制錯誤資訊。

語法

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

參數

[out] restrictedErrorInfo

IRestrictedErrorInfo 物件的指標,其中包含受限制的錯誤資訊。

傳回值

如果此方法成功,則會傳回 S_OK。 否則,它會傳回 HRESULT 錯誤碼。

備註

GetTransformedRestrictedErrorInfo 通常是由語言投影實作,以便向系統公開例外狀況的任何和所有內容。 具體來說,若要從攔截到不同例外狀況的 catch 處理程式內容擲回的例外狀況公開資訊。 擲回的例外狀況會被視為攔截到例外狀況的「轉換」,這也會被視為某些投影的內部例外狀況。 這可讓開發人員深入瞭解原始例外狀況在轉換發生之前的原因。

實作時,系統會使用從 GetTransformedRestrictedErrorInfo 呼叫擷取的 IRestrictedErrorInfo 來建立另一個 IRestrictedErrorInfo 物件連結清單。 這些物件會依序公開為損毀傾印中的 Stowed 例外狀況,以及 CapturePropagationContext 中所擷取之傳播的 Stowed 例外狀況。 如同其他例外狀況,您可以使用 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