Método ILanguageExceptionTransform::GetTransformedRestrictedErrorInfo (restrictederrorinfo.h)
Recupera as informações de erro restritas transformadas.
Sintaxe
HRESULT GetTransformedRestrictedErrorInfo(
[out] IRestrictedErrorInfo **restrictedErrorInfo
);
Parâmetros
[out] restrictedErrorInfo
Um ponteiro para um objeto IRestrictedErrorInfo que contém as informações de erro restritas.
Retornar valor
Se o método for bem-sucedido, ele retornará S_OK. Caso contrário, ele retornará um código de erro HRESULT.
Comentários
GetTransformedRestrictedErrorInfo geralmente é implementado por uma projeção de linguagem para expor ao sistema todo e qualquer contexto de uma exceção. Especificamente, para expor as informações de uma exceção que foi lançada do contexto de um manipulador catch que captura uma exceção diferente. A exceção gerada é considerada uma "transformação" da exceção capturada, que também é considerada uma exceção interna por algumas projeções. Isso permite que um desenvolvedor obtenha informações sobre por que a exceção original, antes da transformação, ocorreu.
Quando implementado, o sistema usa o IRestrictedErrorInfo recuperado de uma chamada para GetTransformedRestrictedErrorInfo para criar outra lista vinculada de objetos IRestrictedErrorInfo . Esses objetos são expostos em como exceções armazenadas nos despejos de falha em sequência com as exceções armazenadas para as propagações capturadas em CapturePropagationContext. Assim como acontece com as outras exceções, você pode percorrer e acessar esses objetos na lista de transformação usando GetPreviousLanguageExceptionErrorInfo.
Exemplos
[
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();
}
}
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 10, versão 1703 [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows Server 2016 [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | restrictederrorinfo.h |