Kelas System.Runtime.InteropServices.COMException

Artikel ini menyediakan keterangan tambahan untuk dokumentasi referensi untuk API ini.

Kelas COMException adalah pengecualian yang dilemparkan ketika HRESULT yang tidak dikenal dikembalikan dari panggilan metode COM.

Runtime bahasa umum mengubah HRESULT terkenal menjadi pengecualian .NET, memungkinkan objek COM mengembalikan informasi kesalahan yang bermakna kepada klien terkelola. Pemetaan HRESULT-to-exception juga berfungsi ke arah lain dengan mengembalikan HRESULT tertentu ke klien yang tidak dikelola. Untuk detail pemetaan, lihat Cara memetakan HRESULT dan pengecualian.

Ketika runtime menemukan HRESULT yang tidak dikenal (HRESULT yang tidak memiliki pengecualian tertentu yang sesuai), itu melemparkan instans COMException kelas. Pengecualian serbaguna ini mengekspos anggota yang sama dengan pengecualian apa pun, dan mewarisi properti publik ErrorCode yang berisi HRESULT yang dikembalikan oleh penerima panggilan. Jika pesan kesalahan tersedia untuk runtime (diperoleh dari antarmuka IErrorInfo atau Err objek di Visual Basic, atau dalam beberapa kasus dari sistem operasi), pesan dikembalikan ke pemanggil. Namun, jika pengembang komponen COM gagal menyertakan pesan kesalahan, runtime mengembalikan HRESULT delapan digit sebagai pengganti string pesan. Memiliki HRESULT memungkinkan pemanggil untuk menentukan penyebab pengecualian generik.

Menangani pengecualian COMException

Berikut ini adalah beberapa pertimbangan untuk memecahkan masalah COMException pengecualian.

ErrorCode Periksa properti Ketika runtime menemukan HRESULT yang tidak dikenal dan melempar COMException pengecualian, ErrorCode properti menyertakan pesan kesalahan atau, jika pesan kesalahan tidak tersedia, nilai HRESULT delapan digit. Pesan kesalahan atau nilai HRESULT dapat membantu Anda menentukan penyebab pengecualian.

Untuk daftar nilai HRESULT, lihat Nilai HRESULT Umum.

Saat meneruskan argumen yang terlambat terikat ke metode objek Microsoft Office, COMException pengecualian dapat dilemparkan saat objek adalah objek COM. Pengikat terlambat mengasumsikan bahwa panggilan metode tersebut melibatkan ByRef parameter dan bahwa properti yang Anda lewati memiliki set pengakses. Jika properti tidak, .NET menghasilkan MissingMethodException pengecualian (dengan CORE_E_MISSINGMETHOD HRESULT ). Untuk mengatasi perilaku ini, gunakan objek terikat awal atau lewati variabel alih-alih properti objek.

COM digunakan untuk berkomunikasi antara Visual Studio dan proses hosting. Karena digunakan sebelum kode berjalan, panggilan ke CoInitializeSecurity menyebabkan pengecualian ini dilemparkan. Dalam beberapa kasus, menjalankan Visual Studio sebagai Administrator dapat mengatasi masalah tersebut. Anda juga dapat menonaktifkan proses hosting.

Melempar pengecualian COMException

Meskipun Anda dapat menggunakan COMException kelas untuk mengembalikan HRESULT tertentu ke klien yang tidak dikelola, melemparkan pengecualian .NET tertentu lebih baik daripada menggunakan pengecualian generik. Pertimbangkan bahwa klien terkelola serta klien yang tidak dikelola dapat menggunakan objek .NET Anda, dan melempar HRESULT ke pemanggil terkelola kurang dapat dipahami daripada melempar pengecualian.