在 try-catch 块之后返回 null

Returning null AFTER a try-catch block

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

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;
}

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

除非在执行 return 语句时出现 IndexOutOfBoundsException 异常,否则您的方法将 return bag[i]。在那种情况下,他们的异常被捕获,因为你没有在 catch black 中抛出另一个异常。该方法将进行到 return null.

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

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