崩溃填充数据适配器

5
我困惑于弄清楚为什么在outlook中使用格式错误的gmail账户查询会导致我的应用程序崩溃而不是引发异常。似乎基于从非托管C++调用代码产生了一个未捕获的win32异常。当我更改了outlook配置文件位置时,错误消失了。我仍然不明白为什么我的.NET代码不能捕获异常,因为我已经嵌套了>20个异常来尝试捕获问题。
我也无法直接在.NET中调试代码,因为我无法设置STAAttribute,我的编译器Visual Studio 2010专业版也不允许我调试C++/CLI代码。 http://winterdom.com/2007/02/jetmapiandsta 查询错误很简单,在一个日期上缺少#号: SELECT * FROM inbox WHERE Body Like '%BWIC%' And rECEIVED>=#07/26/2012 我尝试添加许多异常到catch语句中,但无法防止崩溃。
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();
}

今天我也遇到了同样的问题,你有找到解决方法吗? - MansoorShaikh
你能否创建一个其他人可以在自己的电脑上运行的SSCCE吗? - sashoalm
哪个Win32异常?这似乎是一个外部异常。你在使用COM吗? - Andro
1个回答

1

请查看这个线程,它可能会有所帮助。

根据该线程,您可以在本地环境中捕获异常并将异常抛出到托管世界中。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接