ILanguageExceptionTransform::GetTransformedRestrictedErrorInfo-Methode (restrictederrorinfo.h)
Ruft die transformierten eingeschränkten Fehlerinformationen ab.
Syntax
HRESULT GetTransformedRestrictedErrorInfo(
[out] IRestrictedErrorInfo **restrictedErrorInfo
);
Parameter
[out] restrictedErrorInfo
Ein Zeiger auf ein IRestrictedErrorInfo-Objekt , das die eingeschränkten Fehlerinformationen enthält.
Rückgabewert
Wenn diese Methode erfolgreich ist, wird S_OK zurückgegeben. Andernfalls wird ein Fehlercode HRESULT zurückgegeben.
Hinweise
GetTransformedRestrictedErrorInfo wird im Allgemeinen durch eine Sprachprojektion implementiert, um dem System alle Kontexte aus einer Ausnahme verfügbar zu machen. Insbesondere, um die Informationen aus einer Ausnahme verfügbar zu machen, die aus dem Kontext eines Catch-Handlers ausgelöst wurde, der eine andere Ausnahme abfängt. Die ausgelöste Ausnahme wird als eine "Transformation" der abgefangenen Ausnahme angesehen, die von einigen Projektionen auch als innere Ausnahme betrachtet wird. Auf diese Weise kann ein Entwickler einen Einblick in den Grund erhalten, warum die ursprüngliche Ausnahme vor der Transformation aufgetreten ist.
Bei der Implementierung verwendet das System IRestrictedErrorInfo , das aus einem Aufruf von GetTransformedRestrictedErrorInfo abgerufen wurde, um eine weitere verknüpfte Liste von IRestrictedErrorInfo-Objekten zu erstellen. Diese Objekte werden in als stowierte Ausnahmen in den Absturzabbildern nacheinander mit den verstauten Ausnahmen für die in CapturePropagationContext erfassten Weitergaben verfügbar gemacht. Wie bei den anderen Ausnahmen können Sie diese Objekte in der Transformationsliste mit GetPreviousLanguageExceptionErrorInfo durchlaufen und darauf zugreifen.
Beispiele
[
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();
}
}
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 10, Version 1703 [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2016 [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | restrictederrorinfo.h |