Метод 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 |