Составил из кода пример непонятной мне работы 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)