Menangani Pengecualian Interop COM

Kode terkelola dan tidak terkelola dapat bekerja sama untuk menangani pengecualian. Jika metode melemparkan pengecualian dalam kode terkelola, runtime bahasa umum dapat meneruskan HRESULT ke objek COM. Jika metode gagal dalam kode yang tidak terkelola dengan mengembalikan kegagalan HRESULT, runtime bahasa umum melempar pengecualian yang dapat ditangkap oleh kode terkelola.

Runtime bahasa umum secara otomatis memetakan HRESULT dari interop COM ke pengecualian yang lebih spesifik. Misalnya, E_ACCESSDENIED menjadi UnauthorizedAccessException, E_OUTOFMEMORY menjadi OutOfMemoryException, dan sebagainya.

Jika HRESULT adalah hasil kustom atau jika tidak diketahui oleh runtime bahasa umum, runtime bahasa umum meneruskan generik COMException ke klien. Properti ErrorCode dari COMException berisi nilai HRESULT.

Bekerja dengan IErrorInfo

Ketika kesalahan diteruskan dari COM ke kode terkelola, runtime bahasa umum mengisi objek pengecualian dengan informasi kesalahan. Objek COM yang mendukung IErrorInfo dan mengembalikan HRESULTS memberikan informasi ini ke pengecualian kode terkelola. Misalnya, runtime bahasa umum memetakan Deskripsi dari kesalahan COM ke Message properti pengecualian. Jika HRESULT tidak memberikan informasi kesalahan tambahan, runtime bahasa umum mengisi banyak properti pengecualian dengan nilai default.

Jika metode gagal dalam kode yang tidak terkelola, pengecualian dapat diteruskan ke segmen kode terkelola. Topik HRESULTS dan Pengecualian berisi tabel yang menunjukkan bagaimana peta HRESULTS ke objek pengecualian runtime bahasa umum.

Lihat juga