我使用java语言,我有一个方法,如果它被找到,应该返回一个对象。

如果没有找到,我是否应该:

返回null 抛出异常 其他

哪一个是最好的实践或习语?


当前回答

通常它应该返回null。调用该方法的代码应该决定是抛出异常还是尝试其他操作。

其他回答

作为一般规则,如果方法应该总是返回一个对象,那么就使用例外。如果您预期偶尔会出现null,并希望以某种方式处理它,那么就使用null。

无论你做什么,我强烈建议反对第三种选择:返回一个字符串,说“WTF”。

如果对于客户端代码来说,知道已找到和未找到之间的区别很重要,并且这应该是一个例程行为,那么最好返回null。然后客户端代码可以决定要做什么。

只要问问你自己:“找不到对象是例外情况吗?”如果期望它在程序的正常过程中发生,则可能不应该引发异常(因为它不是异常行为)。

简短的版本:使用异常来处理异常行为,而不是处理程序中的正常控制流。

-工业。

不要认为任何人都提到了异常处理中的开销——需要额外的资源来加载和处理异常,所以除非它是一个真正的应用程序杀死或进程停止事件(继续下去会造成更多的伤害而不是好处),否则我会选择返回一个调用环境可以解释为它认为合适的值。

我更喜欢只返回null,并依赖于调用者来适当地处理它。(因为没有更好的词)例外是,如果我绝对“确定”这个方法将返回一个对象。在这种情况下,失败是一个例外,应该和应该抛出。