代码之家  ›  专栏  ›  技术社区  ›  ZeroCool

您更喜欢C++异常处理还是传递缓冲区来保存错误消息作为参数?

  •  3
  • ZeroCool  · 技术社区  · 14 年前

    我目前正在开发一个低级别的网络应用程序。我们最近遇到了一个关于用户土地和调试土地的错误报告问题。考虑到一些错误可能从较低级别的函数、库中触发…从一个层到另一个更高的层报告准确的错误状态(代码、消息、env…)显示有点麻烦。

    然而,我们已经考虑切换回使用异常,但最近一个PAL使用了这种方法: 使用一个类错误buf,它保存了关于导致错误的原因的足够信息,例如错误代码、缓冲区消息,并在函数中将其作为参数传递。 因此,每当出现问题时,就会在错误->缓冲区和错误->错误代码中设置适当的消息和错误代码,然后转发回调用函数,并发送适当的返回值。

    这实际上是我们在C中所做的(至少libnet做了类似的事情),但是这离效率和健壮性有多远,代码可维护性也可能是一个问题。

    谢谢您,

    3 回复  |  直到 14 年前
        1
  •  8
  •   sbi    14 年前

    异常的优点是调用方不能忽略它们。噢,我见过很多忽略返回值的代码。

    此外,在某些代码中,如果您检查所有调用中是否存在可能的错误,则算法将隐藏在错误处理代码下。除了例外,这不是问题。

        2
  •  2
  •   Alex F    14 年前

    异常处理要好得多,它允许保持代码的整洁和简短,而不需要测试每个函数的成功/失败和失败时的返回。它有运行时成本,如果您想要超快速的东西,可以考虑C风格的错误处理。

    当一些低级时间关键函数使用返回值,而所有其他代码使用异常时,可以使用组合方法。

        3
  •  0
  •   doron    14 年前

    我更喜欢错误代码,这是因为,作为一个程序员,您必须在代码的每一个级别上考虑错误并适当地处理它们。这里可能发生了一个简单的错误跟踪条目。

    除了例外,当一个人抓住他们的时候,他往往会远离问题的根源。如果问题是由一个真正的bug引起的,那么通常一个bug被删除得太远,无法有效地跟踪它。