Condividi tramite


Metodo ILanguageExceptionTransform::GetTransformedRestrictedErrorInfo (restrictederrorinfo.h)

Recupera le informazioni sull'errore con restrizioni trasformate.

Sintassi

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

Parametri

[out] restrictedErrorInfo

Puntatore a un oggetto IRestrictedErrorInfo contenente le informazioni sugli errori con restrizioni.

Valore restituito

Se questo metodo ha esito positivo, restituisce S_OK. In caso contrario, restituisce un codice di errore HRESULT .

Commenti

GetTransformedRestrictedErrorInfo viene in genere implementato da una proiezione del linguaggio per esporre al sistema qualsiasi e tutto il contesto da un'eccezione. In particolare, per esporre le informazioni da un'eccezione generata dal contesto di un gestore catch che rileva un'eccezione diversa. L'eccezione generata viene considerata come una "trasformazione" dell'eccezione rilevata, considerata anche un'eccezione interna da alcune proiezioni. Ciò consente a uno sviluppatore di ottenere informazioni dettagliate sul motivo per cui l'eccezione originale, prima della trasformazione, si è verificata.

Quando implementato, il sistema usa IRestrictedErrorInfo recuperato da una chiamata a GetTransformedRestrictedErrorInfo per creare un altro elenco collegato di oggetti IRestrictedErrorInfo . Questi oggetti vengono esposti in come eccezioni scompongono nei dump di arresto anomalo della sequenza con le eccezioni scompongono per le propagazioni acquisite in CapturePropagationContext. Come per le altre eccezioni, è possibile attraversare e accedere a questi oggetti nell'elenco di trasformazioni usando GetPreviousLanguageExceptionErrorInfo.

Esempio

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

Requisiti

Requisito Valore
Client minimo supportato Windows 10 versione 1703 [solo app desktop]
Server minimo supportato Windows Server 2016 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione restrictederrorinfo.h

Vedi anche

ILanguageExceptionTransform