Должен быть оператор возврата после цикла while
, поскольку, возможно, элемент управления не вообще входит в тело цикла while (когда rightInput
имеет значение true) 1 и метод должен что-то возвращать в этом случае.
Перемещение return nothing;
после , в то время как блок будет работать для вас.
Или вы можете задать условие цикла while как true
while (true) {
try {
...
return XY;
} catch(...) {
...
return nothing;
}
}
1 Хотя в вашем случае rightInput
всегда ложно, компилятор этого не делает (возможно, не может?), И это хорошо. Подумайте, что произойдет, если есть специальная логика для динамического вычисления rightInput
. Тогда это приведет к ошибке компиляции, требующей добавления оператора возврата, поскольку компилятор теперь никоим образом не может сказать, будет ли выполнено тело цикла , тогда как или нет.