1

如果在我的菜单数组中按名称找到,我有这个方法返回一个食谱对象。如果它没有找到它,它会抛出一个自定义的 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;

}

在当前条件下,它只检查第一个菜单点,我如何让它在抛出异常之前检查所有这些点!?我尝试过反转和翻转,但它只会导致 NullPointerExceptions 并检查整个事情而无法进行投掷。有人得到一些指导吗?提前致谢!

4

1 回答 1

3

整个循环完成后抛出异常:

for (int j = 0; j < Menu.length; j++) {
    if (Menu[j].getName().equals(recipeName)) {
        return (Recipe) Menu[j];
    }
}
throw new RecipeNotFoundException();

如果它找到一个配方,它将在到达抛出异常的行之前返回。

当然,这里抛出异常有点没有意义。如果你没有做任何其他事情,你可以在循环之后添加你的错误处理代码而不是抛出你的异常,因为它只是在同一个方法中被捕获,无论如何。当您希望由方法的调用者而不是方法本身来处理错误时,通常会抛出异常。

于 2013-02-13T06:12:43.467 回答