返回布尔值而不是在Java中声明void类型?

14 java boolean void

关于在方法签名中返回布尔值以指示成功操作而不是声明void,是否有任何硬性规则和快速规则?我发现,对于我的调用方法中的更关键操作,我想知道操作是否已完成,因此我可以记录任何问题.这是布尔的"不恰当"使用吗?

jjn*_*guy 22

通常我Exception会在出现问题时使用s来发出信号.

false您可以throw通过Exception详细信息了解问题所在,而不是返回.

返回false并不能为您提供有关该问题的更多信息.

然后,如果您希望方法很容易失败false,那么只需将方法调用放在try/中,而不是检查返回值catch.

很多人会抱怨这种方法比较慢.但是,你获得的好处大大超过了减速.此外,如果你使用Java速度不应该是你的第一关注点.


小智 6

我通常发现在失败的情况下抛出异常是一个比返回布尔值更好的解决方案,因为通常不关心进程是否成功 - 我只关心它是否失败.通过使用异常,我可以提供有关进程实际失败原因的任何数量的信息.

如果异常看起来令人反感,你可以返回一个包含布尔值和状态消息的自定义Status对象(类似于"添加6个新的Foobars!"或"因为Foobin已满而无法添加Foobars!"),尽管这当然是更复杂.