在try-catch块之后返回null

时间:2016-01-29 02:34:54

标签: java return try-catch getter accessor

我在下面的访问器方法中理解代码的含义时遇到了一些麻烦。 Eclipse的编译器要求我在我的try-catch块之后有一个返回语句 。这是否意味着我的getter方法将始终返回null或者它将返回我试图检索的项目,如果它不需要被IndexOutOfBoundsException捕获?

public T get(int i)
{
    try
    {
        return bag[i];
    }
    catch(IndexOutOfBoundsException e) //if(logiSize < i+1)
    {
        System.out.println("Collection has fewer items than the index you entered!");
        System.out.println("Returning null"); //or should I...?
    }
    return null;
}

有人能帮我理解这里的含义吗?非常感谢!

1 个答案:

答案 0 :(得分:2)

除非执行return语句的IndexOutOfBoundsException异常,否则您的方法将返回bag[i]。在这种情况下,他们会捕获异常,因为你没有在catch black中抛出另一个异常。该方法将继续返回null

如果您只需要检查边界,可以这样做:

public T get(int i, T[] bag) {
    if(i < bag.length) {
        return bag[i];
    }
    return null;
}