Составил из кода пример непонятной мне работы try/catch
По непонятной мне причине catch не срабатывает, и я получаю:
rilium@cl-t063-361cl:/tmp$ g++ test2.cpp && ./a.out
terminate called after throwing an instance of 'spectra::exceptions::allocation_error'
Aborted
Хотя если поменять catch(std::exception& ex), на 
catch(std::bad_alloc& ex) или catch(spectra::exceptions::spectra_exception& ex)
Все работает как я и ожидаю.
Что не так? И как правильно сделать такую модель работоспособной?
#include <iostream>
#include <exception>
#include <new>
namespace spectra
{
	namespace exceptions
	{	
		class spectra_exception : public std::exception
		{
		};
		
		class allocation_error : public std::bad_alloc, public spectra::exceptions::spectra_exception
		{
		public:
			virtual const char* what() const throw();
		};
		const char* allocation_error::what() const throw() { return "Not enough memory"; }
	}
}
int main()
{
	try
	{
		throw(spectra::exceptions::allocation_error());
	}
	catch(std::exception& ex)
	{
		std::cout << "Error: " << ex.what() << std::endl;
	}
}
    
      Ответ на:
      
          комментарий
        от anonymous 
  
    
      Ответ на:
      
          комментарий
        от dilmah 
  
    
      Ответ на:
      
          комментарий
        от placement_new 
  
    
      Ответ на:
      
          комментарий
        от dilmah 
  
    
      Ответ на:
      
          комментарий
        от placement_new 
  
    
      Ответ на:
      
          комментарий
        от dilmah 
  
    
        Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
      
Похожие темы
- Форум Валится на throw (2005)
 - Форум Как правильно наследовать от std::exception ? (2007)
 - Форум Исключения в С++ (2010)
 - Форум вопрос по исключениям в с++ (2005)
 - Форум C++/exceptions - деление на ноль не ловиццо, почему? (2006)
 
- Форум Багофича эксепшенов с++ ? (2013)
 - Форум C++ exception object constructor. «Не вызывается» (2008)
 - Форум [C++] [компиляторы] Множественное наследование (2011)
 - Форум C++ iostream::failbit (2005)
 - Форум boost.asio, boost.serialization (2010)