2013-07-03 11 views
5

Sono perplesso nel capire perché una query non corretta di un account gmail in Outlook arresti il ​​crash dell'applicazione anziché semplicemente sollevare un'eccezione. Sembra che ci sia un'eccezione win32 non interrogata basata sulla chiamata del codice da C++ non gestito. L'errore scompare quando cambio la posizione del profilo di Outlook. Non riesco ancora a capire perché il mio codice .NET non sia riuscito a rilevare l'eccezione poiché avevo annidato> 20 eccezioni per cercare di individuare il problema.Adattatore dati di riempimento anomalie

Inoltre non riesco a eseguire il debug del codice direttamente in .NET poiché non sono in grado di impostare STAAttribute e il mio compilatore Visual Studio 2010 Professional non consente di eseguire il debug del codice C++/CLI. http://winterdom.com/2007/02/jetmapiandsta

L'errore query è semplice, con # mancante su una data SELECT * FROM inbox WHERE Body Like '%BWIC%' And rECEIVED>=#07/26/2012

Ho provato ad aggiungere molte eccezioni alla dichiarazione di cattura, ma non può impedire l'incidente.

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

Anche oggi sto affrontando lo stesso problema, hai avuto qualche soluzione. – MansoorShaikh

+0

Puoi creare un SSCCE che qualcuno possa eseguire sul proprio computer? – sashoalm

+0

Quale eccezione Win32? Questa sembra essere un'eccezione esterna. Stai usando COM? – Andro

risposta

1

Date un'occhiata a This thread. Potrebbe essere utile.

In base ad esso è possibile rilevare l'eccezione nell'ambiente nativo e generare un'eccezione nel mondo gestito.

#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(); 
}