Compartir a través de


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

Recupera la información de error restringida transformada.

Sintaxis

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

Parámetros

[out] restrictedErrorInfo

Puntero a un objeto IRestrictedErrorInfo que contiene la información de error restringida.

Valor devuelto

Si este método se realiza correctamente, devuelve S_OK. De lo contrario, devuelve un código de error de HRESULT.

Comentarios

GetTransformedRestrictedErrorInfo generalmente se implementa mediante una proyección de lenguaje para exponer al sistema cualquier contexto y desde una excepción. En concreto, para exponer la información de una excepción que se produjo desde el contexto de un controlador catch que detecta una excepción diferente. La excepción iniciada se considera una "transformación" de la excepción detectada, que también se considera una excepción interna por algunas proyecciones. Esto permite a un desarrollador obtener información sobre por qué se produjo la excepción original, antes de la transformación.

Cuando se implementa, el sistema usa IRestrictedErrorInfo recuperado de una llamada a GetTransformedRestrictedErrorInfo para crear otra lista vinculada de objetos IRestrictedErrorInfo . Estos objetos se exponen como excepciones permitidas en los volcados de memoria en secuencia con las excepciones permitidas para las propagaciones capturadas en CapturePropagationContext. Al igual que con las otras excepciones, puede recorrer y acceder a estos objetos en la lista de transformación mediante GetPreviousLanguageExceptionErrorInfo.

Ejemplos

[ 
    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 Value
Cliente mínimo compatible Windows 10, versión 1703 [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2016 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado restrictederrorinfo.h

Consulte también

ILanguageExceptionTransform