我使用一些基于过滤器的第三方函数返回指定数量的对象:
//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/