我使用java语言,我有一个方法,如果它被找到,应该返回一个对象。
如果没有找到,我是否应该:
返回null 抛出异常 其他
哪一个是最好的实践或习语?
我使用java语言,我有一个方法,如果它被找到,应该返回一个对象。
如果没有找到,我是否应该:
返回null 抛出异常 其他
哪一个是最好的实践或习语?
当前回答
只要它应该返回对象的引用,返回NULL就应该很好。
然而,如果它返回整个该死的东西(就像在c++中,如果你用'return blah;'而不是'return &blah'(或者'blah'是一个指针),那么你不能返回NULL,因为它不是'object'类型。在这种情况下,抛出异常或返回一个没有成功标志集的空白对象是我处理问题的方式。
其他回答
它不包含对象可能发生在正常操作期间,应该由调用者返回NULL来处理。
如果不包含对象表明调用代码或内部状态存在错误,则执行断言。
如果不包含该对象,则表示不经常发生事件。(就像有人从商店中删除了一件商品,而你同时还在结账。)然后抛出异常。
通常它应该返回null。调用该方法的代码应该决定是抛出异常还是尝试其他操作。
只有在确实是错误时才抛出异常。如果对象不存在是预期行为,则返回null。
否则就是个人喜好的问题了。
这取决于你的语言和代码是否支持: 三思而后行 或 EAFP(请求原谅比请求允许容易)
LBYL说你应该检查值(所以返回null) EAFP表示只需尝试操作并查看它是否失败(抛出异常)
虽然我同意以上的观点。异常应该用于异常/错误条件,在使用检查时最好返回null。
Python中的EAFP vs. LBYL: http://mail.python.org/pipermail/python-list/2003-May/205182.html (Web存档)
返回null,异常就是:你的代码所做的不是预期的事情。