这有点类似于" 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?
答案 0 :(得分:1)
使用C ++ 11,最简单的方法是将noexcept
添加到从共享库调用的顶级函数的签名中:
void called_func() noexcept;
这会导致called_func
堆栈帧中的任何未处理的异常(如果未处理它们,则会在下面),以终止程序的执行。