是否可以尝试在静态库(c++)中捕获断言调用?
is it possible to try catch an assert call in a static library(c++)
是否可以尝试在c++中捕获断言调用?我使用库rapidjson(静态库),它很烦人,因为如果它在json文件中找不到东西,它会调用assert。当我想避免它调用assert并自己做错误处理时
您无法捕获断言,因为它们与异常无关。函数/宏assert(expr)
是C语言的一部分,如果提供的表达式求值为false
,将以实现定义的方式导致程序终止。
如果您可以访问有问题的库的源代码,使用定义的预处理器宏NDEBUG
重新编译它应该禁用所有断言。但请注意,这不会用异常替换断言:assert()
将只是被no操作替换,无论所提供的表达式求值为什么。
如果您想要异常(或任何其他类型的有效的错误处理),则必须修改库以满足您的需要。
此外,总是有可能使用另一个符合现代c++设计实践的库。例如,如果您的工具链支持现代c++,则此工具链非常适合。
相关文章:
- 什么时候调用组成单元对象的析构函数
- Boost Beast 异步服务器失败,断言失败:(id_ != T::id) 在多个 aync 调用中
- 如何断言只有当调用对象是常量值时才能调用方法?
- 谷歌测试有没有办法为被调用函数中的断言生成调用方行号
- 优雅断言函数不是从多个线程调用的
- MFC DDX_RADIO会导致调用dodataexchange(dlgdata.cpp行286)时导致调试断言失败
- OpenCV c++ 断言失败调用绘制轮廓
- 断言调用返回的函数的签名 &(引用)
- 调试断言失败!vector.earse() 调用期间出错
- OpenCV 错误:调用检测多尺度时断言失败
- 在 Xcode [c++] 中在断言 (assert.h) 中定义 lambda 时,为类似函数的宏调用提供过多参数会导
- 调用 LoadFrame() MFC、RIBBON、VS2008 C++ 时断言失败
- 调用运算符delete时的断言
- 如何在跟踪断言失败时知道调用方函数
- 调试断言失败-DirectShow筛选器正在调用OpenCV函数-仅限发布模式
- 在从全局对象调用的静态库函数中使用std::vector时,调试断言失败
- 当尝试使用类的实例调用方法时,调试断言错误
- 是否可以尝试在静态库(c++)中捕获断言调用?
- 基构造函数中的 C++/CX 委托失败,并出现纯虚拟调用断言
- 从 C/C++ 调用 Prolog 时将事实传达给 Prolog(不使用断言)