可以消息:: getDescriptor()返回null
Can Message::GetDescriptor() return null?
我在使用它之前一直在检查 Message::GetDescriptor()
的返回值,但是什么时候会返回null?是否不需要检查返回值?
文档:
https://developers.google.com/protocol-buffers/docs/reference/cpp/google.protobuf.message#message#message.getdescriptor.details
声明:
const Descriptor *
Message::GetDescriptor() const
您应该始终检查的返回类型可能是您编码的每个API ,并且永远不要做任何类型的>假设但是可靠的API可能是。API的失败是由于人类控制超出的各种原因: -
- 网络条件波动包括PHY中断(不适用于这种情况(
- 系统运行API运行的系统喜欢space
- 系统超载(太忙于其他过程(
- 不可靠的API实现(错误(等等..
由于API来自 Google ,假设第四个原因永远不会是真实的,只需降低软件的 robustness 即可。对于99.99%的次数,似乎只是冗余检查或过度保护代码 - 但是对于失败的0.01%次,您的软件行为不可靠
从我多年来的经验来看,可以轻松避免(如果不是修复的话(的最昂贵的错误是俯瞰简单和基本错误处理
您不必检查它,对于每条消息,您应该得到一个非空指针。
相关文章:
- 如何在映射中返回null
- 为什么返回 NULL 不会破坏函数?
- fopen 在 gdb 中返回 NULL
- 为什么要从main()返回NULL?
- 为什么TinyXML2的XMLDocument::FirstChild()函数在尝试解析这个有效的XML文件时返回NULL?
- Box2D World.GetBodyList() 返回 NULL,但 World 显然正在更新对象
- boost::p ython:PyErr_Fetch始终返回 NULL 回溯
- 如何在 Visual C++ 中从返回类型为 map 的函数返回 null?
- 如何在C++中返回Null作为引用
- 从模板化函数返回Null对象
- GDALOpen 在 GEOTiff 文件上返回 null
- PyThreadState_GET() 从 PyImport_GetModuleDict() 中返回 NULL
- (位图)LoadImage() 返回 NULL,GetLastError() 返回 0
- 在构造函数处将类对象强制转换为接口始终返回 NULL
- 如何为迭代器返回"null"值?
- 具有 4 个指针的节点的递归插入函数返回 null
- winAPI FindResource 仅在 DLL 中返回 NULL
- 使用 dlopen/dlsym 打开C++共享库 - dlsym 返回 NULL
- SetWindowsHookEx 在挂接到其他线程时返回 NULL
- 尚未归shared_ptr所有的实例的 shared_from_this() 总是返回 null?