你无法捕捉断言,因为它们与异常无关。函数/宏assert(expr)
是C的一部分,如果提供的表达式求值为false
,将以实现定义的方式终止程序。可以找到更多详细信息here。
如果您有权访问相关库的源代码,则使用定义的预处理器宏NDEBUG
重新编译它应禁用所有断言。请注意,这不会用例外替换断言:assert()
只会被no操作替换,无论提供的表达式是什么评估。
如果您需要异常(或任何其他类型的有效错误处理),则必须修改库以满足您的需求。
此外,总是有可能使用另一个符合现代C ++设计实践的库。例如,如果您的工具链支持现代C ++,this one很适合。