在库中,我有一个函数可以在数据库中搜索键并返回对对象的非常量引用。我想处理找不到密钥的情况,这通常是由调用函数时的错误引起的。这种情况太糟糕了,程序无法继续,所以我打印一条消息来帮助发现错误并调用exit(1)
。问题在于 return 语句,在这种情况下它永远不会被执行,但无论如何都必须存在。如果它是一个指针我可以return nullptr;
但有参考吗?我应该做这样的伪代码吗?
Type & get(const Key & k) {
if (my_db.key_exists(k)) {
return my_db.at(k);
}
std::cerr << k << " not found\n";
exit(1);
return *(new Type(some_dummy_parameters));
}
看起来太可怕了!也许我应该避免这样的功能。请告诉我您的意见!
这种情况非常糟糕,程序无法继续,因此我打印一条消息来帮助发现错误并调用 exit(1)
不可以。如果此代码是库的一部分,则该库不应决定应用程序是否应退出。
如果文件已打开并且需要关闭,或者需要清理其他一些资源,或者数据库类的用户想要记录错误并继续执行其他操作,该怎么办?
答案是任何东西but你现在在做什么。抛出异常、返回错误码等但是don't在库或类代码中关闭应用程序。
不管你相信与否,有一个商业数据库库完全可以完成你正在做的事情(关闭应用程序)。他们收到了图书馆用户的很多愤怒的回应,询问他们为什么要意外关闭该应用程序。你知道吗 - 给客户的答案是“我们认为错误严重到足以停止应用程序,因为our图书馆无法继续正常工作”。这不仅是错误的推理,而且近乎傲慢,客户让他们知道这一点。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)