c++ - 我应该使用断言来验证第三方功能吗?

标签 c++ error-handling

我使用一些基于过滤器的第三方函数返回指定数量的对象:

//void GetObjects(std::vector<T>&, Filter, int /*objectsNumber*/)

GetObjects(vec, filter, 1);

if(vec.empty())
{
   throw ObjectNotFound();
}

assert(vec.size() == 1);

我应该像上面那样使用断言吗?这是一个典型的断言场景吗?

最佳答案

如何处理程序中的错误取决于您和您的程序性质。

在生产环境中,您通常尽量不要断言,因为这意味着您的应用程序终止。在其他情况下,执行您的程序的进程会意识到您的程序已死,然后重新启动它。

如果只是为了学习/培训,使用适当的消息进行断言是一种轻松快速地找到问题的好方法。

底线 - 这完全取决于您。这里没有对错之分。

如果您确实想要断言,通常只有在不满足某些非常基本的不变量/条件时,当您的程序不知道如何从这一点开始时,您才会这样做。

关于c++ - 我应该使用断言来验证第三方功能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44101357/

相关文章:

django - 如何显示错误消息Django

ios - Swift 中的 func 会抛出什么类型的错误?

c++ - 如何在二维数组 ROW 中找到最小值和最大值?

c++ - 菱形继承模式可以只使用一个虚拟继承吗?

c++ - 使用 std::move 将 std::unique_ptr 作为 qt 信号参数传递

c++ - C/C++ - 可执行路径

android - 在 Android NDK 上获取堆栈跟踪

python - 如何确保输入形式为#。##

arrays - awk 问题(从用户定义的函数返回一个数组)

Scala 错误处理 : Try or Either?