Все ли исключения для исключения происходят из std:: exception? Если не все они происходят из какого-то базового класса исключения?
Форсировать исключения
Ответ 1
Согласно документация boost::exception
не наследует std::exception
.
FAQ объясняет, почему.
Однако эта страница объясняет, как правильно использовать исключения Boost.
Ответ 2
Библиотека "good boost citizen" должна бросить с помощью boost::throw_exception
, чтобы поддерживать конфигурации, в которых обработка исключений отключена.
Функция boost::throw_exception
требует, чтобы тип прошедшего исключение публично публиковал из std::exception
(начиная с версии 1.37.0 или около того boost::throw_exception
выдаст ошибку компиляции, если это требование не будет выполнено.) Кроме того, по умолчанию исключения, испускаемые с помощью boost::throw_exception
, происходят из boost::exception
.
Однако для библиотек Boost нет необходимости генерировать исключения через boost:throw_exception
или выводить из std::exception
.
Ответ 3
Я так считаю. Нельзя думать о том, что библиотека boost генерирует что-то не-std:: исключение.