我使用java语言,我有一个方法,如果它被找到,应该返回一个对象。
如果没有找到,我是否应该:
返回null 抛出异常 其他
哪一个是最好的实践或习语?
我使用java语言,我有一个方法,如果它被找到,应该返回一个对象。
如果没有找到,我是否应该:
返回null 抛出异常 其他
哪一个是最好的实践或习语?
当前回答
作为一般规则,如果方法应该总是返回一个对象,那么就使用例外。如果您预期偶尔会出现null,并希望以某种方式处理它,那么就使用null。
无论你做什么,我强烈建议反对第三种选择:返回一个字符串,说“WTF”。
其他回答
它不包含对象可能发生在正常操作期间,应该由调用者返回NULL来处理。
如果不包含对象表明调用代码或内部状态存在错误,则执行断言。
如果不包含该对象,则表示不经常发生事件。(就像有人从商店中删除了一件商品,而你同时还在结账。)然后抛出异常。
首选返回null——
如果调用者在不检查的情况下使用它,异常就会在那里发生。
如果调用者并没有真正使用它,不要给他一个try/catch块
使用空对象模式或抛出异常。
这取决于你的方法。如果你的方法应该总是返回一个有效的对象,但却没有找到,那么抛出异常就是正确的方法。如果该方法只是返回一个可能存在也可能不存在的对象(比如联系人的图像),则不应该引发错误。
你可能还想公开一个返回布尔值true/false的方法,如果这个方法实际上会返回一个对象,这样你就不必a)检查null或b)捕捉异常
不要认为任何人都提到了异常处理中的开销——需要额外的资源来加载和处理异常,所以除非它是一个真正的应用程序杀死或进程停止事件(继续下去会造成更多的伤害而不是好处),否则我会选择返回一个调用环境可以解释为它认为合适的值。