ILanguageExceptionTransform::GetTransformedRestrictedErrorInfo 方法 (restrictederrorinfo.h)
检索转换后的受限错误信息。
语法
HRESULT GetTransformedRestrictedErrorInfo(
[out] IRestrictedErrorInfo **restrictedErrorInfo
);
参数
[out] restrictedErrorInfo
指向包含受限错误信息的 IRestrictedErrorInfo 对象的指针。
返回值
如果该方法成功,则返回 S_OK。 否则,将返回 HRESULT 错误代码。
注解
GetTransformedRestrictedErrorInfo 通常由语言投影实现,以便向系统公开异常的任何和所有上下文。 具体而言,公开从捕获不同异常的 catch 处理程序的上下文引发的异常中的信息。 引发的异常被视为捕获异常的“转换”,某些投影也将其视为内部异常。 这使开发人员能够深入了解在转换之前发生原始异常的原因。
实现后,系统使用从调用 GetTransformedRestrictedErrorInfo 中检索到的 IRestrictedErrorInfo 创建另一个 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 |
标头 | restrictederrorinfo.h |