Поделиться через


Метод ILanguageExceptionTransform::GetTransformedRestrictedErrorInfo (restrictederrorinfo.h)

Извлекает преобразованные ограниченные сведения об ошибке.

Синтаксис

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

Параметры

[out] restrictedErrorInfo

Указатель на объект IRestrictedErrorInfo , содержащий ограниченные сведения об ошибке.

Возвращаемое значение

Если этот метод завершается успешно, он возвращает S_OK. В противном случае возвращается код ошибки HRESULT .

Комментарии

GetTransformedRestrictedErrorInfo обычно реализуется проекцией языка, чтобы предоставить системе любой контекст из исключения. В частности, для предоставления сведений из исключения, которое было создано из контекста обработчика catch, который перехватывает другое исключение. Созданное исключение считается "преобразованием" перехваченного исключения, которое также считается внутренним в некоторых проекциях. Это позволяет разработчику получить представление о том, почему возникло исходное исключение до преобразования.

При реализации система использует IRestrictedErrorInfo , полученный из вызова Метода GetTransformedRestrictedErrorInfo , для создания другого связанного списка объектов IRestrictedErrorInfo . Эти объекты предоставляются в в виде размещенных исключений в аварийных дампах в последовательности с уложенными исключениями для распространения, зафиксированными в CapturePropagationContext. Как и в случае с другими исключениями, вы можете просматривать эти объекты в списке преобразований и получать доступ к ним с помощью GetPreviousLanguageExceptionErrorInfo.

Примеры

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

Требования

Требование Значение
Минимальная версия клиента Windows 10 версии 1703 [только классические приложения]
Минимальная версия сервера Windows Server 2016 [только классические приложения]
Целевая платформа Windows
Header restrictederrorinfo.h

См. также раздел

ILanguageExceptionTransform