ILanguageExceptionTransform::GetTransformedRestrictedErrorInfo 方法 (restrictederrorinfo.h)
擷取已轉換的受限制錯誤資訊。
語法
HRESULT GetTransformedRestrictedErrorInfo(
[out] IRestrictedErrorInfo **restrictedErrorInfo
);
參數
[out] restrictedErrorInfo
IRestrictedErrorInfo 物件的指標,其中包含受限制的錯誤資訊。
傳回值
如果此方法成功,則會傳回 S_OK。 否則,它會傳回 HRESULT 錯誤碼。
備註
GetTransformedRestrictedErrorInfo 通常是由語言投影實作,以便向系統公開例外狀況的任何和所有內容。 具體來說,若要從攔截到不同例外狀況的 catch 處理程式內容擲回的例外狀況公開資訊。 擲回的例外狀況會被視為攔截到例外狀況的「轉換」,這也會被視為某些投影的內部例外狀況。 這可讓開發人員深入瞭解原始例外狀況在轉換發生之前的原因。
實作時,系統會使用從 GetTransformedRestrictedErrorInfo 呼叫擷取的 IRestrictedErrorInfo 來建立另一個 IRestrictedErrorInfo 物件連結清單。 這些物件會依序公開為損毀傾印中的 Stowed 例外狀況,以及 CapturePropagationContext 中所擷取之傳播的 Stowed 例外狀況。 如同其他例外狀況,您可以使用 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 |