Visual C++, ActiveX Data Objects (ADO) için bir mekanizma yükseltme alma'nın özel durumu değiştirme

Makale çevirileri Makale çevirileri
Makale numarası: 177425 - Bu makalenin geçerli olduğu ürünleri görün.
Bu makale arşivlenmiştir. "Olduğu gibi" sunulmaktadır ve bundan sonra güncelleştirilmeyecektir.
Not Microsoft Visual C++ .NET 2002 ve Visual C++ .NET 2003, Microsoft .NET Framework tarafından sağlanan bir yönetilen kod model hem de yerel Microsoft Windows kod modeli yönetilmeyen destekler. Bu makaledeki bilgiler yalnızca yönetilmeyen Visual C++ kod uygulanır.Microsoft Visual C++ .NET 2005, Microsoft .NET Framework tarafından sağlanan bir yönetilen kod model hem de yerel Microsoft Windows kod modeli yönetilmeyen destekler.
Hepsini aç | Hepsini kapa

Bu Sayfada

Özet

Istemci uygulamanızın oluşturmak için alma deyimi kullanarak özel durum nesne yöntemi için bir sarmalayıcı başarısız bir HRESULT karşılaştığında _com_error özel durum sınıfı aracılığıyla işleme tanıtır. Bu mekanizma, kendi uygulama ile değiştirmek için geçerli nedenleri olabilir.

Daha fazla bilgi

Alma ve yüklü başarısız HRESULTS için özel durumlar oluşturmak, iki yolu vardır. Ilk yalnızca raw_interfaces_only yan tümcesi alma deyimiyle kullanmaktır. Ancak, bu alma sağlayan bir sarmalayıcı sınıfları avantajlarından bazıları olumsuzlar.

Ikinci yöntem, kendi uygulamanız için aşağıdaki prototip ve varsayılan uygulaması olan _com_raise_error sağlayarak şöyledir:

   void __stdcall _com_raise_error(HRESULT hr, IErrorInfo* perrinfo = 0)
   throw(_com_error);

   void __stdcall
   _com_raise_error(HRESULT hr, IErrorInfo* perrinfo = 0) throw(_com_error)
   {
       throw _com_error(hr, perrinfo);
   }
				
Bu işlev, bildirilen ancak Comdef.h dosyasında uygulanmadı. Bir .OBJ dosyayı kendi uygulamasında sağlarsanız, the linker Comsupp.lib dosyasından getirme farklı olarak, bu uygulama kullanır. kodunuz tarafından kolayca değiştirilebilir; böylece _com_raise_error kendi nesne Comsupp.lib dosyasında bulunmaktadır.

Aşağıdaki işlevi yükseltme alma'nın özel bir örnek uygulamasıdır.

Not: derleyici şu anda bir işlevi özel durum belirtimi yok sayar ve aşağıdaki uyarı oluşturur:

C4290 Uyarı: C++ özel durum belirtimi, yoksayıldı.
Şu anda özel durum belirtimi uygulama ayrıntılarını standartlaştırılmış değil ve kabul edildi ancak Microsoft Visual C++ uygulanmadı. Yoksayılan özel durum belirtimleriyle derlenmiş kod derlenmiş çekirdekler ve özel durum belirtimlerini destekleyen gelecekteki sürümlerde yeniden bağlı gerekir. Bu uyarı, uyarı pragma kullanarak önleyebilirsiniz:

#pragma warning( disable : 4290 ) 
				

Örnek kod

   void __stdcall
   _com_raise_error(HRESULT hr, IErrorInfo* perrinfo = 0) throw(_com_error)
       {
           //This message box is for demonstration purpose only.
           AfxMessageBox( "_com_raise_error (HRESULT, IErrorInfo*)" );
           //Your own error handling code or just an abort.
       }

    #import <msado15.dll>
        ...


     _bstr_t     bstrEmpty(L"");
     _ConnectionPtr  Conn1 = NULL;
     Conn1.CreateInstance( __uuidof( Connection ) );
     Conn1->Open( bstrEmpty, bstrEmpty, bstrEmpty );

				
Bu kod, herhangi bir geçerli bağlantı bilgilerini girmeden bir <a0>ActiveX Data Objects (ADO)</a0> bağlantısı nesneyi açmak çalışır. _Com_error _com_raise_error değiştirme yükseltilmiş engelledi.

Özellikler

Makale numarası: 177425 - Last Review: 22 Şubat 2014 Cumartesi - Gözden geçirme: 4.0
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Visual C++ 5.0 Enterprise Edition
  • Microsoft Visual C++ 6.0 Enterprise Edition
  • Microsoft Visual C++ 5.0 Professional Edition
  • Microsoft Visual C++ 6.0 Professional Edition
  • Microsoft Visual C++, 32-bit Learning Edition 6.0
  • Microsoft Visual C++ 2005 Express Edition
  • Microsoft Visual C++ .NET 2003 Standard Edition
  • Microsoft Visual C++ .NET 2002 Standard Edition
Anahtar Kelimeler: 
kbnosurvey kbarchive kbmt kbhowto kbcompiler kbdatabase kbinfo kbmdacnosweep KB177425 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:177425

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com