System.Runtime.InteropServices.COMException sınıfı
Bu makale, bu API'nin başvuru belgelerine ek açıklamalar sağlar.
COMException sınıfı, COM yöntem çağrısından tanınmayan bir HRESULT döndürülürken oluşan özel durumdur.
Ortak dil çalışma zamanı, iyi bilinen HRESULT'leri .NET özel durumlarına dönüştürerek COM nesnelerinin yönetilen istemcilere anlamlı hata bilgileri döndürmesini sağlar. HRESULT-özel durum eşlemesi, yönetilmeyen istemcilere belirli HRESULTs döndürerek diğer yönde de çalışır. Eşleme ayrıntıları için bkz . HRESULTs ve özel durumları eşleme.
Çalışma zamanı tanınmayan bir HRESULT (belirli, karşılık gelen özel durumu olmayan bir HRESULT) ile karşılaştığında sınıfın bir örneğini COMException oluşturur. Bu çok amaçlı özel durum, herhangi bir özel durumla aynı üyeleri kullanıma sunar ve çağıran tarafından döndürülen HRESULT'u içeren bir ortak ErrorCode özelliği devralır. Çalışma zamanı için bir hata iletisi varsa (IErrorInfo arabiriminden veya Visual Basic'teki nesneden veya Err
bazı durumlarda işletim sisteminden elde edilir), ileti çağırana döndürülür. Ancak, COM bileşeni geliştiricisi bir hata iletisi ekleyemezse, çalışma zamanı ileti dizesi yerine sekiz basamaklı HRESULT döndürür. HRESULT'un olması, çağıranın genel özel durumun nedenini belirlemesine olanak tanır.
COMException özel durumunu işleme
Özel durum sorunlarını gidermek COMException için dikkat edilmesi gereken bazı noktalar aşağıdadır.
ErrorCode Özelliğini denetleyin Çalışma zamanı tanıdık olmayan bir HRESULT ile karşılaştığında ve bir COMException özel durum oluşturursa, ErrorCode özellik hata iletisini veya bir hata iletisi kullanılamıyorsa sekiz basamaklı HRESULT değerini içerir. Hata iletisi veya HRESULT değeri, özel durumun nedenini belirlemenize yardımcı olabilir.
HRESULT değerlerinin listesi için bkz . Ortak HRESULT Değerleri.
Microsoft Office nesnelerinin yöntemlerine geç bağlı bağımsız değişkenler geçirilirken, nesneler COM nesneleri olduğunda bir COMException özel durum oluşturulabilir. Geç bağlayıcı, bu tür yöntem çağrılarının bir ByRef
parametre içerdiğini ve geçirdiğiniz özelliğin bir set
erişimciye sahip olduğunu varsayar. Özelliği oluşturmazsa, .NET bir MissingMethodException özel durum oluşturur (HRESULT ile CORE_E_MISSINGMETHOD
). Bu davranışa geçici bir çözüm olarak, erken bağlanan nesneleri kullanın veya nesnenin özelliği yerine bir değişken geçirin.
COM, Visual Studio ile barındırma işlemi arasında iletişim kurmak için kullanılır. Kod çalıştırılmadan önce kullanıldığından CoInitializeSecurity çağrısı bu özel durumun ortaya çıkmasına neden olur. Bazı durumlarda Visual Studio'yu Yönetici istrator olarak çalıştırmak sorunu çözebilir. Barındırma işlemini de devre dışı bırakabilirsiniz.
COMException özel durumu oluşturma
Yönetilmeyen istemcilere belirli HRESULTs döndürmek için sınıfını kullanabilirsiniz COMException , ancak belirli bir .NET özel durumu oluşturmak genel bir özel durum kullanmaktan daha iyidir. Yönetilen istemcilerin yanı sıra yönetilmeyen istemcilerin de .NET nesnenizi kullanabileceğini ve yönetilen bir çağırana HRESULT oluşturmanın özel durum oluşturmaktan daha az anlaşılır olduğunu düşünün.