Menginterpretasikan Kode Kesalahan

Setelah Anda menentukan aplikasi mana yang merupakan sumber masalah, Anda perlu mencari tahu kesalahan apa yang telah terjadi. Kesalahan dimunculkan dan dilaporkan dalam format yang berbeda, tergantung pada bahasa yang digunakan aplikasi Anda.

Di Microsoft Visual C++, nilai keberhasilan, peringatan, dan kegagalan dikembalikan menggunakan angka 32-bit yang dikenal sebagai HRESULT. Untuk daftar nilai HRESULT yang ditentukan oleh sistem, lihat file header Winerror.h yang disertakan dengan Windows SDK. File ini mencakup semua kode kesalahan COM+ dan deskripsi. Untuk informasi lebih lanjut mengenai nilai HRESULT, silakan lihat Penanganan Kesalahan.

Dalam bahasa Java, instans com.ms.com.ComFailException dilemparkan untuk menunjukkan kegagalan, di mana objek ComFailException menentukan HRESULT. Sebuah instance dari com.ms.com.ComSuccessException menunjukkan keberhasilan meskipun nilai pengembaliannya adalah False. Untuk informasi tentang menginterpretasikan pengecualian ini, lihat dokumentasi Microsoft Visual J++.

Nota

Proses server aplikasi COM+ yang menghosting objek Visual J++ tidak akan menganggur (bahkan dengan objek aktif nol) kecuali Anda menonaktifkan penelusuran kesalahan JIT di IDE VJ6. Untuk informasi tentang cara melakukannya, lihat dokumentasi Visual J++.

Di Visual Basic, Anda dapat mengambil nilai HRESULT dengan memeriksa properti Err.Number. Deskripsi kesalahan dapat diambil dengan properti Err.Description.

Anda juga dapat menggunakan utilitas ERRLOOK di Microsoft Visual Studio untuk mengambil pesan kesalahan sistem atau pesan kesalahan modul. ERRLOOK mengambil teks pesan kesalahan secara otomatis jika Anda menyeret dan meletakkan nilai heksadesimal atau desimal dari debugger Visual Studio atau aplikasi berkemampuan Automation lainnya. Anda juga dapat memasukkan nilai dengan mengetikkannya atau menyalinnya dari papan klip IDE dan mengklik opsi Pencarian.

Metode C++ berikut mencetak deskripsi kesalahan, berdasarkan input HRESULT.

#include <stdio.h>
#include <windows.h>
#include <tchar.h>

void ErrorDescription(HRESULT hr) 
{ 
     if(FACILITY_WINDOWS == HRESULT_FACILITY(hr)) 
         hr = HRESULT_CODE(hr); 
     TCHAR* szErrMsg; 

     if(FormatMessage( 
       FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_SYSTEM, 
       NULL, hr, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), 
       (LPTSTR)&szErrMsg, 0, NULL) != 0) 
     { 
         _tprintf(TEXT("%s"), szErrMsg); 
         LocalFree(szErrMsg); 
     } else 
         _tprintf( TEXT("[Could not find a description for error # %#x.]\n"), hr); 
}

Tabel berikut ini menyediakan deskripsi kode kesalahan umum di COM+.

Kode kesalahan Definisi
COMADMIN_E_ALREADYINSTALLED (Sudah Terpasang)
Objek sudah terdaftar.
COMADMIN_E_APP_FILE_READFAIL
Terjadi kesalahan saat membaca file aplikasi.
COMADMIN_E_APP_FILE_VERSION
Nomor versi tidak valid dalam file aplikasi.
Kesalahan COMADMIN_E_APP_FILE_WRITEFAIL terjadi saat gagal menulis ke file aplikasi.
Terjadi kesalahan saat menulis ke file aplikasi.
COMADMIN_E_APPDIRNOTFOUND
Direktori penginstalan aplikasi tidak ditemukan.
COMQC_E_APLIKASI_TIDAK_DIANTRI
Hanya aplikasi COM+ yang ditandai "queued" yang dapat dibuat menggunakan moniker "queue".
COMADMIN_E_APPLICATIONEXISTS (Aplikasi Sudah Ada)
Aplikasi sudah diinstal.
COMADMIN_E_APPLID_MATCHES_CLSID
CLSID dengan GUID yang sama dengan ID aplikasi baru sudah diinstal pada komputer ini.
COMADMIN_E_APP_NOT_RUNNING
Aplikasi yang ditentukan saat ini tidak berjalan.
COMADMIN_E_AUTHENTICATIONLEVEL
Tidak dapat mengatur tingkat autentikasi yang diperlukan untuk permintaan pembaruan.
COMADMIN_E_BADPATH
Jalur file tidak valid.
COMADMIN_E_BADREGISTRYLIBID
ID pustaka tipe terdaftar tidak valid.
COMADMIN_E_BADREGISTRYPROGID
ProgID komponen hilang atau rusak.
Tidak dapat mengekspor proxy aplikasi
Proksi aplikasi tidak dapat diekspor.
COMADMIN_E_CAN_NOT_START_APP
Gagal memulai aplikasi karena merupakan aplikasi perpustakaan atau proksi aplikasi.
COMADMIN_E_CAN_NOT_EXPORT_SYS_APP
Aplikasi sistem tidak dapat diekspor.
COMADMIN_E_TIDAK_BISA_MENDAFTAR_KE_KOMPONEN
Pengguna tidak dapat berlangganan komponen ini karena komponen mungkin telah diimpor.
COMADMIN_E_TIDAKBISAMENYALINKANFILE
Terjadi kesalahan saat menyalin file.
COMADMIN_E_CLSIDORIIDMISMATCH
CLSID atau IID file aplikasi tidak cocok dengan DLL yang sesuai.
COMADMIN_E_COMP_MOVE_BAD_DEST
Pemindahan komponen gagal karena aplikasi tujuan tidak ada lagi.
Kesalahan COMADMIN_E_COMP_MOVE_LOCKED: Pemindahan komponen terkunci
Pemindahan komponen tidak diizinkan karena aplikasi sumber atau tujuan adalah aplikasi sistem atau saat ini dikunci terhadap perubahan.
COMADMIN_E_COMPFILE_BADTLB
Pustaka tipe tidak dapat dimuat.
COMADMIN_E_COMPFILE_CLASSNOTAVAIL
DLL tidak mendukung komponen yang tercantum dalam perpustakaan tipe.
No changes are necessary since error codes are typically left untranslated, and the existing translation maintains accuracy by retaining the code in its original form.
File ini tidak ada.
COMADMIN_E_COMPFILE_GETCLASSOBJ
MetodeGetClassObject gagal di DLL.
Gagal memuat berkas komponen COMADMIN: LOADDLLFAIL
DLL tidak dapat dimuat.
COMADMIN_E_COMPFILE_NOREGISTRAR
Pencatat komponen yang direferensikan dalam file ini tidak tersedia.
COMADMIN_E_COMPFILE_NOTINSTALLABLE
File tidak berisi komponen atau informasi komponen.
COMADMIN_E_COREQCOMPINSTALLED
Komponen dalam DLL yang sama sudah diinstal.
COMADMIN_E_DLLLOADFAILED
DLL tidak dapat dimuat.
COMADMIN_E_DLLREGISTERSERVER
FungsiDllRegisterServer gagal saat komponen diinstal.
COMADMIN_E_EVENTCLASS_CANT_BE_SUBSCRIBER
Kelas peristiwa tidak dapat dikonfigurasi sebagai komponen penerima. Saat upaya dilakukan untuk membuat langganan dengan kelas peristiwa sebagai pelanggan, kesalahan ini dikembalikan.
COMADMIN_E_INVALIDUSERIDS
Satu atau beberapa pengguna dalam file aplikasi tidak sah.
COMADMIN_E_KEYMISSING (Kunci Hilang)
Objek tidak ditemukan dalam katalog.
COMADMIN_E_LIB_APP_PROXY_INCOMPATIBLE
Aplikasi pustaka dan proksi aplikasi tidak kompatibel. Kesalahan ini dikembalikan ketika upaya dilakukan untuk mengekspor proksi aplikasi dan properti aktivasi aplikasi adalah pustaka.
COMADMIN_E_NOREGISTRYCLSID
CLSID dari komponen hilang atau rusak.
COMADMIN_E_NOSERVERSHARE
Tidak ada file server yang dapat dibagikan.
COMADMIN_E_NOTCHANGEABLE
Perubahan pada objek ini dan sub-objeknya telah dinonaktifkan.
COMADMIN_TDKBISADIPERHAPUS
Fungsi hapus telah dinonaktifkan untuk objek ini.
COMADMIN_E_NOTINREGISTRY
Objek tidak ditemukan dalam registri.
COMADMIN_E_NOUSER
Satu atau beberapa pengguna tidak valid.
Objek yang dimaksud tidak ada (COMADMIN_E_OBJECT_DOES_NOT_EXIST)
Salah satu objek yang ditentukan tidak dapat ditemukan.
COMADMIN_E_OBJECT_PARENT_MISSING (Induk Objek Hilang)
Salah satu objek yang dimasukkan atau diperbarui bukan milik koleksi induk yang valid.
COMADMIN_E_OBJECTERRORS
Terjadi kesalahan saat mengakses satu atau beberapa objek. Untuk informasi selengkapnya, lihat koleksi ErrorInfo.
COMADMIN_E_OBJECTEXISTS
Objek yang Anda coba tambahkan atau ganti namanya sudah ada.
COMADMIN_E_OBJECTINVALID
Satu atau beberapa properti objek hilang atau tidak valid.
COMADMIN_E_OBJECTNOTPOOLABLE
Objek ini tidak dapat dikumpulkan.
COMADMIN_E_PROPERTYSAVEFAILED
Satu atau beberapa pengaturan properti tidak valid atau bertentangan satu sama lain.
COMADMIN_E_PROPERTY_OVERFLOW
Nilai properti terlalu besar.
COMADMIN_E_REGFILE_CORRUPT
File pendaftaran rusak.
COMADMIN_E_REGISTERTLB
Sistem tidak dapat mendaftarkan pustaka jenis.
COMADMIN_E_REGISTRARFAILED
Terjadi kesalahan ketika di pencatat komponen.
COMADMIN_E_REMOTEINTERFACE
Informasi antarmuka hilang atau diubah.
COMADMIN_E_MEMBUTUHKAN_PLATFORM_BERBEDA
Operasi ini tidak diaktifkan pada platform ini.
PERAN_COMADMIN_TIDAK_ADA
Peran yang ditetapkan ke komponen, antarmuka, atau metode tidak ada dalam aplikasi.
COMADMIN_E_ROLEEXISTS
Peran sudah ada.
COMADMIN_E_SERVICENOTINSTALLED
Layanan tidak diinstal.
COMADMIN_E_SESSION
Versi katalog server tidak didukung.
Beberapa Sudah Dijeda
Satu atau beberapa proses aplikasi yang ditentukan sudah dijeda.
Beberapa komponen sudah berjalan
Satu atau beberapa proses aplikasi yang ditentukan sudah berjalan.
COMADMIN_E_MULAI_APLIKASI_MEMBUTUHKAN_KOMPONEN
Untuk memulai aplikasi, Anda harus memiliki komponen dalam aplikasi.
COMADMIN_E_APLIKASI_LAYANAN_TIDAK_DAPAT_DIKUMPULKAN_ATAU_DIGUNAKAN_ULANG
Aplikasi COM+ yang berjalan sebagai layanan NT mungkin tidak ditandai sebagai terkumpul atau didaur ulang.
COMADMIN_E_SYSTEMAPP
Operasi ini tidak dapat dilakukan pada aplikasi sistem.
COMADMIN_E_USER_IN_SET
Satu atau beberapa pengguna sudah ditetapkan ke kumpulan partisi lokal.
COMADMIN_E_USERPASSWDNOTVALID
Identitas atau kata sandi yang diatur pada aplikasi tidak valid.

Isolasi Kesalahan dan Kebijakan Cepat Gagal

Menemukan Sumber Kesalahan

Bagaimana COM+ Memodifikasi Nilai Pengembalian

Strategi untuk Menangani Kesalahan di COM+

Pemecahan Masalah