gpt4 book ai didi

c++ - 如何让 STL 抛出异常而不是断言?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:41:35 26 4
gpt4 key购买 nike

我必须为一些写得不好的 C++ 代码编写测试。问题是代码在许多情况下会导致 STL 断言/调试中断(通常是由愚蠢的错误引起的,例如超出字符串/vector 范围的访问),这会导致测试终止。

是否有可能使 STL 抛出异常(可以被捕获)而不只是崩溃?

我必须将对原始代码的更改保持在绝对最低限度。

感谢帮助

最佳答案

这绝对取决于您使用的 STL。也就是说,这可能根本不可能。

该标准定义了许多保证(尤其是 C++0x 的保证),并且函数是否抛出是这些保证的一部分。例如std::vector<T>::operator[]不会扔。

话虽这么说,可能会有很多技巧(用于调试的特定编译标志,或者更改 STL 中使用的宏,如果有的话),但它会非常具体。

另一种解决方案可能是尝试在虚拟化环境中运行该程序。例如,在 Linux 上,您可以在 Valgrind 下运行它。它会报告访问错误,但实际上不会停止程序的执行。

关于c++ - 如何让 STL 抛出异常而不是断言?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6161075/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com