可以消息:: getDescriptor()返回null

Can Message::GetDescriptor() return null?

本文关键字:返回 null getDescriptor 消息      更新时间:2023-10-16

我在使用它之前一直在检查 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%次,您的软件行为不可靠

从我多年来的经验来看,可以轻松避免(如果不是修复的话(的最昂贵的错误是俯瞰简单和基本错误处理

的结果

您不必检查它,对于每条消息,您应该得到一个非空指针。