Boost :: interprocess: не удалось обработать исключение interprocess_exception с managed_shared_memory - PullRequest
2 голосов
/ 31 января 2012

У меня есть следующий фрагмент кода

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.

...