Bagikan melalui


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 sistem, lihat file header Winerror.h yang disertakan dengan Windows SDK. File ini mencakup semua kode kesalahan COM+ dan deskripsi. Untuk informasi selengkapnya tentang nilai HRESULT , lihat Penanganan Kesalahan.

Dalam bahasa Java, instans com.ms.com.ComFailException dilemparkan untuk menunjukkan kegagalan, di mana objek ComFailException menentukan HRESULT. Instans com.ms.com.ComSuccessException menunjukkan keberhasilan dengan nilai pengembalian False. Untuk informasi tentang menginterpretasikan pengecualian ini, lihat dokumentasi Microsoft Visual J++.

Catatan

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 menempelkannya dari clipboard IDE dan mengklik opsi Cari .

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

#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
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.
COMADMIN_E_APP_FILE_WRITEFAIL
Terjadi kesalahan saat menulis ke file aplikasi.
COMADMIN_E_APPDIRNOTFOUND
Direktori penginstalan aplikasi tidak ditemukan.
COMQC_E_APPLICATION_NOT_QUEUED
Hanya aplikasi COM+ yang ditandai "antrean" yang dapat dibuat menggunakan moniker "antrean".
COMADMIN_E_APPLICATIONEXISTS
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.
COMADMIN_E_CAN_NOT_EXPORT_APP_PROXY
Proksi aplikasi tidak dapat diekspor.
COMADMIN_E_CAN_NOT_START_APP
Gagal memulai aplikasi karena merupakan aplikasi pustaka atau proksi aplikasi.
COMADMIN_E_CAN_NOT_EXPORT_SYS_APP
Aplikasi sistem tidak dapat diekspor.
COMADMIN_E_CANT_SUBSCRIBE_TO_COMPONENT
Pengguna tidak dapat berlangganan komponen ini karena komponen mungkin telah diimpor.
COMADMIN_E_CANTCOPYFILE
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.
COMADMIN_E_COMP_MOVE_LOCKED
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 pustaka jenis.
COMADMIN_E_COMPFILE_DOESNOTEXIST
File ini tidak ada.
COMADMIN_E_COMPFILE_GETCLASSOBJ
Metode GetClassObject gagal di DLL.
COMADMIN_E_COMPFILE_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
Fungsi DllRegisterServer gagal saat komponen diinstal.
COMADMIN_E_EVENTCLASS_CANT_BE_SUBSCRIBER
Kelas peristiwa tidak dapat dikonfigurasi sebagai komponen pelanggan. 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 valid.
COMADMIN_E_KEYMISSING
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 komponen hilang atau rusak.
COMADMIN_E_NOSERVERSHARE
Tidak ada berbagi file server yang tersedia.
COMADMIN_E_NOTCHANGEABLE
Perubahan pada objek ini dan sub-objeknya telah dinonaktifkan.
COMADMIN_E_NOTDELETEABLE
Fungsi hapus telah dinonaktifkan untuk objek ini.
COMADMIN_E_NOTINREGISTRY
Objek tidak ditemukan dalam registri.
COMADMIN_E_NOUSER
Satu atau beberapa pengguna tidak valid.
COMADMIN_E_OBJECT_DOES_NOT_EXIST
Salah satu objek yang ditentukan tidak dapat ditemukan.
COMADMIN_E_OBJECT_PARENT_MISSING
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 tipe.
COMADMIN_E_REGISTRARFAILED
Terjadi kesalahan saat berada di pencatat komponen.
COMADMIN_E_REMOTEINTERFACE
Informasi antarmuka hilang atau diubah.
COMADMIN_E_REQUIRES_DIFFERENT_PLATFORM
Operasi ini tidak diaktifkan pada platform ini.
COMADMIN_E_ROLE_DOES_NOT_EXIST
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.
COMADMIN_S_SOMEALREADYPAUSED
Satu atau beberapa proses aplikasi yang ditentukan sudah dijeda.
COMADMIN_S_SOMEALREADYRUNNING
Satu atau beberapa proses aplikasi yang ditentukan sudah berjalan.
COMADMIN_E_START_APP_NEEDS_COMPONENTS
Untuk memulai aplikasi, Anda harus memiliki komponen dalam aplikasi.
COMADMIN_E_SVCAPP_NOT_POOLABLE_OR_RECYCLABLE
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 set partisi lokal.
COMADMIN_E_USERPASSWDNOTVALID
Identitas atau kata sandi yang diatur pada aplikasi tidak valid.

Isolasi Kesalahan dan Kebijakan Failfast

Menemukan Sumber Kesalahan

Cara COM+ Memodifikasi Nilai Yang Dikembalikan

Strategi untuk Menangani Kesalahan di COM+

Pemecahan Masalah