1

Menu配列で名前で見つかった場合、Recipeオブジェクトを返すこのメソッドがあります。見つからない場合は、カスタム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 に答える