2013-07-03 3 views
5

Outlook의 gmail 계정에 대한 잘못된 검색어로 인해 단순히 예외가 발생하는 대신 내 애플리케이션이 충돌하는 이유를 파악하기가 어려웠습니다. 관리되지 않는 C++에서 코드를 호출하면 catch되지 않은 win32 예외가 있음을 알 수 있습니다. Outlook 프로필 위치를 변경하면 오류가 사라집니다. 문제를 잡으려고 20 개 이상의 예외가 중첩되어 있기 때문에 .NET 코드가 예외를 잡을 수없는 이유는 아직도 이해할 수 없습니다.크래시 충전 데이터 어댑터

STAAttribute를 설정하지 못하고 컴파일러 Visual Studio 2010 Professional에서 C++/CLI 코드를 디버깅 할 수 없기 때문에 .NET의 코드를 직접 디버깅 할 수도 없습니다. http://winterdom.com/2007/02/jetmapiandsta

쿼리 오류 # 데이트 내가 catch 문에 많은 예외를 추가하려고했습니다 SELECT * FROM inbox WHERE Body Like '%BWIC%' And rECEIVED>=#07/26/2012

에 누락 된 간단하지만, 충돌을 방지 할 수 없습니다.

System::Data::DataSet ^db_DataSet=gcnew System::Data::DataSet; 
int const Fill_Result=db_Adapter.Fill(db_DataSet); 
} 
catch (System::Exception ^ex) { 
    ex; 
} 
catch (...) { 
    ; 
} 
finally { 
    if (db_Conn) 
     db_Conn.close(); 
} 
+0

오늘도 같은 문제에 직면하고 있습니다. 해결책을 얻었습니까? – MansoorShaikh

+0

누군가 자신의 컴퓨터에서 실행할 수있는 SSCCE를 만들 수 있습니까? – sashoalm

+0

어떤 Win32 예외입니까? 이것은 외부 예외 인 것 같습니다. COM을 사용하고 있습니까? – Andro

답변

1

This 스레드를 살펴보십시오. 도움이 될 수 있습니다.

에 따르면 네이티브 환경에서 예외를 catch하고 관리되는 세계로 예외를 throw 할 수 있습니다.

#include <exception> 


try 
{ 
    try 
    { 
     Application::Run(gcnew frmMain()); 
    } 
    catch(const exception& ex) 
    { 
     throw gcnew System::Exception(gcnew System::String(ex.what())); 
    } 
} 
catch (Exception^ ex) 
{ 
    LogAndExit(ex); 
} 
catch (...) 
{ 
    LogAndExit(); 
}