Проверка всех расположений в массиве перед возвратом переменной
У меня есть этот метод, который возвращает объект рецепта, если найден по имени в моем массиве меню. Если он не находит его, он генерирует специальное RecipeNotFoundException и просто говорит, что он не найден...
public static Recipe getRecipe(String recipeName){
try{
for(int j = 0 ; j < Menu.length ; j++){
if(Menu[j].getName().equals(recipeName)){
return (Recipe)Menu[j];
}
else{
throw new RecipeNotFoundException();
}
}
}catch(RecipeNotFoundException e){
System.out.println("Recipe Not Found!");
}
return null;
}
В его текущем состоянии он проверяет только первое место в меню, как мне сделать так, чтобы он проверял их все, прежде чем выдать исключение!? Я пробовал инвертировать и проваливать, но это просто приводит к исключениям NullPointerException и проверке всего этого без возможности выполнения броска. Кто-нибудь получил руководство? Заранее спасибо!
1 ответ
Бросьте свое исключение после завершения всего цикла:
for (int j = 0; j < Menu.length; j++) {
if (Menu[j].getName().equals(recipeName)) {
return (Recipe) Menu[j];
}
}
throw new RecipeNotFoundException();
Если он найдет рецепт, он вернется до того, как достигнет строки, чтобы выдать исключение.
Конечно, выбрасывать исключения здесь немного бессмысленно. Если вы больше ничего не делаете, вы можете просто добавить код обработки ошибок после цикла, а не выдавать свое исключение, так как оно все равно перехватывается в том же методе. Вы обычно генерируете исключения, когда хотите, чтобы ошибка была обработана вызывающей стороной метода, а не самим методом.