2011-06-16 86 views
0

我在使用错误代码而不是异常的C++中的遗留代码上工作。C++错误代码传播

在这种情况下,FN A()调用B()它调用C()等等

现在,如果C()返回错误,我想在B()本身退出,而不必通过它返回到A()并让A()处理该错误。然而,很少有其他团队成员具有最重要的功能来执行错误处理。现在哪一个会很好?

同样在后一种情况下,由于我们不够早退出,所以碰巧存在多个返回语句。不,我没有听说过应该避免在函数中多次返回。如果我避免返回,那么嵌套ifs来处理。

回答

0

我认为应尽可能在本地处理错误。也就是说,如果一个类的方法有足够的知识来处理错误,它应该这样做。但是,如果处理错误si退出程序的方式,我认为这个标准不适用。在这种情况下,你应该像分析@Als所说的那样分阶段返回,并且只有一个退出点。在其他情况下,尽可能在本地处理错误。

0

然而很少有其他团队成员具有最重要的功能来执行错误处理。现在哪一个会很好?

这取决于,例如,如果某些函数需要在其调用的函数失败时需要清理,那么您可能希望以分阶段的方式返回。

通常要避免多次返回,因为它会使源代码不易读,难以理解。作为个人选择,我喜欢将我的功能作为单一入口点和单个出口点。

0

您不能同时满足“错误代码传播”和“单一返回”,至少不是很干净。选择一个并与之共存。

其实我回来了。你可以都有,但你必须使用goto。这就是Linux内核处理错误返回的方式。

+0

或者你有嵌套'if'语句的三位:) – duedl0r 2011-06-16 16:16:13

+0

@ duedl0r:我确实说“干净”。 ;-) – 2011-06-16 16:19:21