5

我很困惑为什么 Outlook 中的 gmail 帐户格式错误的查询会导致我的应用程序崩溃,而不是简单地引发异常。似乎存在基于从非托管 C++ 调用代码的未捕获的 win32 异常。当我更改 Outlook 配置文件位置时,错误消失。我仍然不明白为什么我的 .NET 代码无法捕获异常,因为我嵌套了 > 20 个异常来尝试捕获问题。

我也无法直接在 .NET 中调试代码,因为我无法设置 STAAttribute,而且我的编译器 Visual Studio 2010 Professional 不允许我调试 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();
}
4

1 回答 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(); 
}
于 2014-05-15T06:10:11.627 回答