# import의 예외 메커니즘에 대해 ADO (ActiveX 데이터 개체 () Visual C++ 에서 발생시키는 바꾸는 방법

기술 자료 번역 기술 자료 번역
기술 자료: 177425 - 이 문서가 적용되는 제품 보기.
이 문서가 보관되었습니다. "그대로" 제공되었으며, 업데이트가 되지 않을 것입니다.
참고 Microsoft Visual C++ .NET 2002 및 Microsoft Visual C++ .NET 2003 Microsoft .NET Framework에서 제공하는 관리되는 코드 모델과 관리되지 않는 네이티브 Microsoft Windows 코드 모델을 모두 지원합니다. 이 문서에 나와 있는 정보는 관리되지 않는 Visual C++ 코드에만 적용됩니다.Microsoft Visual C++ .NET 2005 Microsoft .NET Framework에서 제공하는 관리되는 코드 모델과 관리되지 않는 네이티브 Microsoft Windows 코드 모델을 모두 지원합니다.
모두 확대 | 모두 축소

이 페이지에서

요약

클라이언트 응용 프로그램을 만들 때 # import 문을 사용하여 예외를 개체의 메서드에 대한 래퍼 실패 HRESULT를 발견한 경우 _com_error 예외 클래스를 통해 처리 소개합니다. 이 메커니즘은 사용자 고유의 구현으로 바꿀 유효한 이유가 있을 수 있습니다.

추가 정보

두 가지 방법으로 # import 사용 및 실패한 HRESULTS에 대해 예외를 발생시키는 것이 없을 수 있습니다. 첫 번째 단순히 # import 문을 사용하여 raw_interfaces_only 절을 사용할 수 있습니다. 그러나 이것은 일부 # import 제공하는 래퍼 클래스의 장점은 부정합니다.

두 번째 다음 프로토타입 및 기본 구현이 _com_raise_error에 대한 자체 구현을 제공하는 기술입니다.

   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);
   }
				
이 함수가 선언되었지만 Comdef.h 파일에서 구현되지 않습니다. 링커는 .OBJ 파일에 사용자 지정 구현을 제공할 경우 Comsupp.lib 파일에서 가져오는 해당 구현을 사용합니다. _com_raise_error는 Comsupp.lib 파일의 자체 개체가 존재하므로 코드에서 쉽게 바꿀 수 있습니다.

함수를 발생시키는 경우 # import 예외 샘플 구현은 다음과가 같습니다.

참고: 현재 컴파일러는 함수의 예외 사양은 무시하고 다음 경고가 발생하는 경우를 보여 줍니다.

경고 C4290: C++ 예외 사양 무시됩니다.
이 시간에 예외 사양이 구현 세부 있어야 표준화되어 있지 및 받아들일 있지만 Microsoft Visual C++에서 구현되지 않습니다. 무시되는 예외 사양이 컴파일된 코드를 컴파일하고 예외 사양을 지원하는 이후 버전에서 다시 연결된 할 수 있습니다. 경고 pragma 사용하여 이 경고를 방지할 수 있습니다.

#pragma warning( disable : 4290 ) 
				

예제 코드

   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 );

				
이 코드는 올바른 연결 정보를 제공하지 않고 ADO (ActiveX 데이터 개체) 연결 개체를 열려고 시도합니다. _com_raise_error 바꾸는 경우 _com_error를 발생하는 것이 없습니다.

속성

기술 자료: 177425 - 마지막 검토: 2014년 2월 22일 토요일 - 수정: 4.0
본 문서의 정보는 다음의 제품에 적용됩니다.
  • 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
키워드:?
kbnosurvey kbarchive kbmt kbhowto kbcompiler kbdatabase kbinfo kbmdacnosweep KB177425 KbMtko
기계 번역된 문서
중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.

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