- 某些库的例外情况?

时间:2014-04-11 07:02:21

标签: c++ exception stl g++ compiler-flags

这有点类似于" Disabling C++ exceptions, how can I make any std:: throw() immediately terminate?。"我希望我的程序在STL抛出异常时终止。

问题如下:我正在编写一个库,然后将其作为共享对象加载,并由我无法控制的程序执行。不幸的是,这个程序在一个大尝试块中运行所有内容,因此如果抛出错误,我不会得到堆栈跟踪/核心转储,导致::at类函数超出范围错误无用

这听起来像-fno-exceptions的理想用例,但我不能只使用-fno-exceptions,因为boost_log和调用我的程序都在其头文件中定义了异常处理,给出了编译错误与-fno-exceptions。

有没有办法只为stl例外启用-fno-exceptions?

1 个答案:

答案 0 :(得分:1)

使用C ++ 11,最简单的方法是将noexcept添加到从共享库调用的顶级函数的签名中:

void called_func() noexcept;

这会导致called_func堆栈帧中的任何未处理的异常(如果未处理它们,则会在下面),以终止程序的执行。