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".