您更喜欢什么:C++异常处理或传递缓冲区以将错误消息保存为参数?

Zer*_*ool 3 c++ error-handling

我目前正在开发一个低级网络应用程序.我们最近遇到了关于用户土地和调试土地的错误报告问题.鉴于某些错误可能会从较低级别的函数启动,库...从一个层向另一个更高层报告确切的错误状态(代码,消息,env ...)已经显示有些麻烦.

然而,我们已经考虑切换回使用异常,但最近有一个朋友已经出现了这种方法:使用类Error_Buf,其中包含有关导致错误的原因的足够信息,如错误代码,缓冲区消息,并将其作为参数传递给函数.因此,只要出现问题,就会在error-> buffer和error-> error_code中设置适当的消息和错误代码,然后将其转发回调用函数并发送足够的返回值.

这实际上是我们在c中所做的事情(至少libnet做了类似的事情),但这与效率和稳健性有什么接近或远,代码可维护性也可能是一个问题.

谢谢,

sbi*_*sbi 8

异常的优点是调用者不能忽略它们.OTOH,我看过很多忽略返回值的代码.

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

  • @Niki:不同的是,除了例外,他们_deliberately_需要这样做.(这是墨菲或马基雅维利磕磕绊绊之间的旧区别,对于C++来说,这经常受到压力.) (4认同)