Это чем-то похоже наОтключение исключений C ++, как я могу сделать так, чтобы любой std :: throw () был немедленно завершен?.«Я бы хотел, чтобы моя программа заканчивалась всякий раз, когда из STL выбрасывалось исключение.
Проблема заключается в следующем: я пишу библиотеку, которая затем загружается как общий объект и выполняется программой, над которой у меня нет контроля. К сожалению, эта программа выполняет все с большой попытки, так что я не получаю трассировки стека / дамп ядра, если выдается ошибка, рендеринг ::at
бесполезна ошибка класса функции вне диапазона.
Это звучит как идеальный вариант использования для -fno-exceptions, но я не могу просто использовать -fno-exceptions, потому что boost_log и вызывающая меня программа имеют обработку исключений, определенную в их заголовках, что дает мне ошибки компиляции с -fno-exceptions ,
Есть ли способ включить -fno-excptions только для исключений stl?
С C ++ 11 самый простой способ сделать это добавить noexcept
к сигнатуре функции верхнего уровня, которая вызывается из вашей общей библиотеки:
void called_func() noexcept;
Это вызовет любые необработанные исключения в called_func
кадр стека (или ниже, если они не обрабатываются) для прекращения выполнения программы.
Других решений пока нет …