Metode ILanguageExceptionTransform::GetTransformedRestrictedErrorInfo (restrictederrorinfo.h)

Mengambil info kesalahan terbatas yang ditransformasi.

Sintaks

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

Parameter

[out] restrictedErrorInfo

Penunjuk ke objek IRestrictedErrorInfo yang berisi info kesalahan terbatas.

Nilai kembali

Jika metode ini berhasil, metode akan mengembalikan S_OK. Jika tidak, kode kesalahan HRESULT akan dikembalikan.

Keterangan

GetTransformedRestrictedErrorInfo umumnya diimplementasikan oleh proyeksi bahasa untuk mengekspos ke sistem setiap dan semua konteks dari pengecualian. Secara khusus, untuk mengekspos informasi dari pengecualian yang dilemparkan dari konteks handler tangkapan yang menangkap pengecualian yang berbeda. Pengecualian yang dilemparkan dianggap sebagai "transformasi" dari pengecualian yang tertangkap, yang juga dianggap sebagai pengecualian dalam oleh beberapa proyeksi. Ini memungkinkan pengembang untuk mendapatkan wawasan tentang mengapa pengecualian asli, sebelum transformasi, terjadi.

Saat diimplementasikan, sistem menggunakan IRestrictedErrorInfo yang diambil dari panggilan ke GetTransformedRestrictedErrorInfo untuk membuat daftar objek IRestrictedErrorInfo lain yang ditautkan . Objek-objek ini diekspos sebagai pengecualian yang disimpan dalam crash dump secara berurutan dengan pengecualian yang disimpan untuk propagasi yang diambil di CapturePropagationContext. Seperti halnya pengecualian lainnya, Anda dapat melintasi dan mengakses objek ini dalam daftar transformasi menggunakan GetPreviousLanguageExceptionErrorInfo.

Contoh

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

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 10, versi 1703 [hanya aplikasi desktop]
Server minimum yang didukung Windows Server 2016 [hanya aplikasi desktop]
Target Platform Windows
Header restrictederrorinfo.h

Lihat juga

ILanguageExceptionTransform