Strategi Penanganan Kesalahan

Karena metode antarmuka bersifat virtual, pemanggil tidak dimungkinkan untuk mengetahui serangkaian nilai lengkap yang mungkin dikembalikan dari satu panggilan. Satu implementasi metode dapat mengembalikan lima nilai; yang lain dapat mengembalikan delapan.

Dokumentasi mencantumkan nilai umum yang dapat dikembalikan untuk setiap metode; ini adalah nilai yang harus Anda periksa dan tangani dalam kode Anda karena memiliki arti khusus. Nilai lain dapat dikembalikan, tetapi karena tidak bermakna, Anda tidak perlu menulis kode khusus untuk menanganinya. Pemeriksaan sederhana untuk nol atau nonzero memadai.

Nilai HRESULT

Nilai pengembalian fungsi dan metode COM adalah HRESULT. Nilai beberapa HRESULT telah diubah dalam COM untuk menghilangkan semua duplikasi dan tumpang tindih dengan kode kesalahan sistem. Kode kesalahan sistem duplikat telah diubah menjadi FACILITY_WIN32, dan kode yang tumpang tindih tetap berada di FACILITY_NULL. Nilai HRESULT umum dan nilainya tercantum dalam tabel berikut.

HRESULT Nilai Deskripsi
E_ABORT
0x80004004
Operasi dibatalkan karena kesalahan yang tidak ditentukan.
E_ACCESSDENIED
0x80070005
Kesalahan umum yang ditolak akses.
E_FAIL
0x80004005
Kegagalan yang tidak ditentukan telah terjadi.
E_HANDLE
0x80070006
Handel yang tidak valid digunakan.
E_INVALIDARG
0x80070057
Satu atau beberapa argumen tidak valid.
E_NOINTERFACE
0x80004002
Metode QueryInterface tidak mengenali antarmuka yang diminta. Antarmuka tidak didukung.
E_NOTIMPL
0x80004001
Metode ini tidak diterapkan.
E_OUTOFMEMORY
0x8007000E
Metode gagal mengalokasikan memori yang diperlukan.
E_PENDING
0x8000000A
Data yang diperlukan untuk menyelesaikan operasi belum tersedia.
E_POINTER
0x80004003
Penunjuk tidak valid digunakan.
E_UNEXPECTED
0x8000FFFF
Kegagalan besar telah terjadi.
S_FALSE
0x00000001
Metode berhasil dan mengembalikan nilai boolean FALSE.
S_OK
0x00000000
Metode berhasil. Jika nilai pengembalian boolean diharapkan, nilai yang dikembalikan adalah TRUE.

Kesalahan Jaringan

Jika empat digit pertama kode kesalahan adalah 8007, ini menunjukkan kesalahan sistem atau jaringan. Anda dapat menggunakan perintah net untuk mendekode jenis kesalahan ini. Untuk mendekode kesalahan, pertama-tama konversi empat digit terakhir kode kesalahan heksadesimal menjadi desimal. Kemudian, pada prompt perintah, ketik berikut, di mana kode desimal diganti dengan nilai pengembalian yang ingin Anda dekode:

decimal_code helpmsg <bersih>

Perintah net mengembalikan deskripsi kesalahan. Misalnya, jika COM mengembalikan kesalahan 8007054B, konversikan 054B menjadi desimal (1355). Kemudian ketik yang berikut ini:

net helpmsg 1355

Perintah net mengembalikan deskripsi kesalahan: "Domain yang ditentukan tidak ada".

Penanganan Kesalahan di COM