我使用c ++中的遗留代码,它使用错误代码而不是异常。
在这种情况下,fn A()调用B()调用C()等
现在如果C()返回错误,我想退出B()本身,而不必将其传递回A()并让A()处理错误。然而,很少有其他团队成员拥有最顶层的功能来进行错误处理。现在哪一个会好?
同样在后一种情况下,由于我们没有尽早退出,所以恰好有多个return语句。不,我听说过应该避免函数中的多次返回。如果我避免返回,那么有嵌套的ifs来处理。
答案 0 :(得分:0)
然而,很少有其他团队成员拥有最顶层的功能来进行错误处理。现在哪一个会好?
这取决于,当它调用的函数失败时,如果每个函数都需要一些清理,那么你可能希望以分阶段的方式返回。
通常要避免多次返回,因为它会使源代码的可读性降低,难以理解。作为个人选择,我喜欢让我的功能单个入口点和单个出口点。
答案 1 :(得分:0)
您不能同时满足“错误代码传播”和“单一返回”,至少不能干净利落。选择一个并与之共存。
实际上,我接受了。您可以同时拥有这两者,但您必须使用goto
。这就是Linux内核处理错误返回的方式。
答案 2 :(得分:0)
我认为应该尽可能在本地处理错误。也就是说,如果一个类'方法有足够的知识来处理错误,它应该这样做。但是,如果处理错误si的方式退出程序,我认为这个标准不适用。在这种情况下,你应该像@Als所说的那样分阶段返回,并且只有一个退出点。在其他情况下,尽可能在本地处理错误。