У меня есть следующий фрагмент кода
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.