перегружаю в ребенке методы и выбрасываю исключение, но исключение улетает, пролетая main и другие места с catch. Пробовал catch (...) — ничего, пробовал ставить throw в не-virtual методы — работает.
Кто-нибудь сталкивался с подобным? К сожалению, код не могу предоставить, по причине — многа, а воспроизвести в минимальном примере не смог. использую clang, может баг, но что-то сомневаюсь?
Кратко: Выкидываю далеко в коде ребенка std::exception, ловлю const std::exception &, но exception будто пролетает всё и прерывает программу:
terminate called after throwing an instance of 'std::logic_error'
Исключение, которое вызывает terminate, точно из этого метода вылетает?
> Выкидываю далеко в коде ребенка std::exception > terminate called after throwing an instance of 'std::logic_error'
у меня логика линейная очень. то есть, main -> class -> class -> class и тд
а ловлю я очень рано, и есть в main ловля на Uncaught exception на всякий
Ну он наследник же
не вижу противоречий
я не по значению, а по ссылка ловлю
Запуск в gdb что скажет? Выбрасывается исключение в том же методе?
Что написано в строчке, которая бросает исключение? throw std::logic_error...?
агась. пробовал всякое, и просто throw std::logic_error и через свои методы для кастомных ошибок — результат один, если в виртуальном методе, то пролетает
Это единый бинарь? Нет никаких библиотек или странной линковки?
да, call stack правильный
нуу.... есть либа header-only подключенная. но она в этом месте не используется уже
Вопрос скорее в том, не кидается ли исключение из динамической библиотеки, например
По пути нигде нет noexcept функций?
хммм... об этом не подумал, проверю
Обсуждают сегодня