Bagikan melalui


Kode dalam FACILITY_ITF

HRESULTdengan fasilitas seperti FACILITY_NULL dan FACILITY_RPC memiliki arti universal karena didefinisikan pada satu sumber: Microsoft. Namun, HRESULT dalam FACILITY_ITF ditentukan oleh fungsi atau metode antarmuka tempat HRESULTdikembalikan. Ini berarti bahwa nilai 32-bit yang sama dalam FACILITY_ITF dikembalikan dari dua metode antarmuka yang berbeda mungkin memiliki arti yang berbeda.

Alasan HRESULTdalam FACILITY_ITF dapat memiliki arti yang berbeda dalam antarmuka yang berbeda adalah bahwa HRESULTdisimpan ke ukuran jenis data yang efisien 32 bit. Sayangnya, 32 bit tidak cukup besar untuk pengembangan sistem alokasi kode kesalahan yang menghindari kode yang bertentangan yang dialokasikan oleh programmer yang berbeda pada waktu yang berbeda di tempat yang berbeda (tidak seperti penanganan pengidentifikasi antarmuka dan CLSID). Akibatnya, HRESULT 32-bit terstruktur sehingga Microsoft dapat menentukan beberapa kode kesalahan universal, sambil memungkinkan programmer lain untuk menentukan kode kesalahan baru tanpa takut konflik. Konvensi kode status adalah sebagai berikut:

  • Kode status di fasilitas selain FACILITY_ITF hanya dapat ditentukan oleh Microsoft.
  • Kode status di fasilitas FACILITY_ITF didefinisikan hanya oleh pengembang antarmuka atau fungsi yang mengembalikan kode status. Untuk menghindari kode kesalahan yang bertentangan, siapa pun yang mendefinisikan antarmuka bertanggung jawab untuk mengoordinasikan dan menerbitkan kode status FACILITY_ITF yang terkait dengan antarmuka tersebut.

Semua kode FACILITY_ITF yang ditentukan COM memiliki nilai kode dalam rentang 0x0000-0x01FF. Meskipun legal untuk menggunakan kode apa pun dalam FACILITY_ITF, disarankan agar hanya nilai kode dalam rentang 0xFFFF 0x0200 yang digunakan. Rekomendasi ini dibuat sebagai sarana untuk mengurangi kebingungan dengan kesalahan yang ditentukan COM.

Disarankan juga agar pengembang menentukan fungsi dan antarmuka baru untuk mengembalikan kode kesalahan seperti yang didefinisikan oleh COM dan di fasilitas selain FACILITY_ITF. Secara khusus, antarmuka yang memiliki kemungkinan untuk di-remote menggunakan RPC di masa mendatang harus mendefinisikan kode FACILITY_RPC sebagai legal. E_UNEXPECTED adalah kode kesalahan tertentu yang ingin dibuat oleh sebagian besar pengembang secara universal.

Penanganan Kesalahan di COM