Java API中的正确返回值?

时间:2012-04-25 13:45:05

标签: java api

我来自C世界,我们使用“define”来定义不同的返回值,从C函数返回的值,如下所示:

#define RETURN_SUCCESS 0
#define RETURN_ERROR -1

int myFunc()
{
    if(...) return(RETURN_SUCCESS);
    else if(...) return(RETURN_ERROR);            
}

这是如何用Java完成的,正确的方法?

假设我有:

public MyObject findMyObject()
{
     MyObject tempObject = search();

     if( tempObject.type == myType ) 
     { 
        return tempObject;
     }
     else
     {
        return null; 
     }
}

可以退回null吗?

有更合适的方法吗?

3 个答案:

答案 0 :(得分:5)

返回null是可以的。您会在Java API中注意到returns null sometimes or -1 where an Int is expected。如果出现问题,经常使用的另一个选项是throw an exception

这个问题往往会让大多数人和你现在可能会问自己的问题是“嗯,我什么时候会抛出异常,什么时候才能返回null?”这个问题得到了很好的回答here

答案 1 :(得分:4)

使用返回代码来指示Java中的错误是一种反模式。你应该使用例外。

如果错误是由编程错误引起的(参数无效,状态不正确),则抛出未经检查的异常实例。

如果错误是因为环境中出现了问题(无法连接到服务器,找不到所需的文件),则抛出已检查的异常。

答案 2 :(得分:1)

返回符合您定义的规范的内容总是可以的。因此,如果您在文档中定义(javadoc和tests)哪些情况可能导致返回null,那么您可以毫不费力地返回它。

您还必须明白,错误代码(如C代码)的人质不是Java中最好的策略。有些人甚至可能认为它是反模式。使用异常更常见。鉴于您不熟悉Java,请考虑阅读http://docs.oracle.com/javase/tutorial/essential/exceptions/中的教程以获取更多信息。