我在下面的访问器方法中理解代码的含义时遇到了一些麻烦。 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;
}
有人能帮我理解这里的含义吗?非常感谢!
答案 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;
}