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.
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk