У меня возникли проблемы с пониманием последствий кода в моем методе доступа ниже. Компилятор Eclipse требует, чтобы у меня есть оператор возврата после мой блок try-catch. Означает ли это, что мой метод getter всегда будет возвращать значение null или он вернет элемент, который я пытаюсь получить, если он не должен быть пойманным методом IndexOutOfBoundsException?Возврат null ПОСЛЕ блока try-catch
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;
}
Может ли кто-нибудь помочь мне понять последствия здесь? Спасибо!
Если IOOBE происходит и блок задвижка вводится ** ** ничего не возвращается, и это не кошерно. Поэтому либо возвращайтесь из блока catch, либо после него. –
В «реальном коде», однако, это случай, когда было бы прекрасно, если бы просто * исключалось исключение * и пузырь к вызывающему. Из 'List':« IndexOutOfBoundsException »- если индекс выходит за пределы диапазона (индекс <0 || index> = size())« – chrylis
@HovercraftFullOfEels в порядке, так что это общее правило, чтобы убедиться, что что-то возвращено incase то, что было пробовано, не работает/не выполняется, не так ли? – Her