Partager via


Méthode ILanguageExceptionTransform ::GetTransformedRestrictedErrorInfo (restrictederrorinfo.h)

Récupère les informations d’erreur restreintes transformées.

Syntaxe

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

Paramètres

[out] restrictedErrorInfo

Pointeur vers un objet IRestrictedErrorInfo qui contient les informations d’erreur restreintes.

Valeur retournée

Si cette méthode réussit, elle retourne S_OK. Sinon, elle retourne un code d’erreur HRESULT.

Remarques

GetTransformedRestrictedErrorInfo est généralement implémenté par une projection de langage afin d’exposer au système n’importe quel contexte à partir d’une exception. Plus précisément, pour exposer les informations d’une exception levée à partir du contexte d’un gestionnaire catch qui intercepte une autre exception. L’exception levée est considérée comme une « transformation » de l’exception interceptée, qui est également considérée comme une exception interne par certaines projections. Cela permet à un développeur d’obtenir des informations sur la raison pour laquelle l’exception d’origine, avant la transformation, s’est produite.

Une fois implémenté, le système utilise iRestrictedErrorInfo récupéré à partir d’un appel à GetTransformedRestrictedErrorInfo pour créer une autre liste liée d’objets IRestrictedErrorInfo . Ces objets sont exposés dans en tant qu’exceptions rangées dans les vidages sur incident dans l’ordre avec les exceptions enregistrées pour les propagations capturées dans CapturePropagationContext. Comme pour les autres exceptions, vous pouvez parcourir et accéder à ces objets dans la liste de transformation à l’aide de GetPreviousLanguageExceptionErrorInfo.

Exemples

[ 
    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(); 
    } 
} 

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 10, version 1703 [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2016 (applications de bureau uniquement)
Plateforme cible Windows
En-tête restrictederrorinfo.h

Voir aussi

ILanguageExceptionTransform