Boost :: interprocess:无法使用managed_shared_memory处理interprocess_exception

时间:2012-01-31 16:53:58

标签: c++ exception boost interprocess

我有以下代码

try
{
    // Vector creation in shared memory. The shm must exist.
    m_pxShm = new managed_shared_memory(open_only, pcShmName);
    m_pxShm->construct<T>(pcVecName)[iSize]();  // THROW EXCEPTION <==
    m_xVectorPair = m_pxShm->find<T>(pcVecName);

    if (0 == m_xVectorPair.first)
    {
        throw std::exception();
    }
}
catch (std::exception)
{
    throw SharedMemoryVectorBadAllocException();
}

SharedMemoryVectorBadAllocException使用std::exception作为基类。当我运行这段代码时,带有'construct'方法的行抛出一个异常(因为我创建了一个比共享内存大的向量)。但是没有处理抛出的异常,应用程序崩溃了。即使我逐行调试它,catch语句也不会处理异常。我试图使用catch参数std::exception,interprocess_exception,...等等,但没有成功。我该如何处理异常?我正在使用Visual Studio 2010。

0 个答案:

没有答案