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 |