Поверка метода на исключения(Exceptions)

143
30 декабря 2019, 01:20

хотелось проверить получение параметров на их валидность и выбросить исключение с соответствующим описанием ошибки, для этого как я понимаю нужно создать метод типа: private void checkArguments(тут аргументы для проверки) и в методе с кодом перед работой нужно как-то вызывать этот метод для проверки

    public class Cook extends Human {
    public Cook() {
        super();
    }
    public Cook (String name) {
        super (name);
    }
    public void cook (ArrayList<Food> fl, String name, Veget veget) {
        int rand = new Random().nextInt(4);
        Food f = new Food(name);
        switch (rand) {
            case 0: f.setTaste(Taste.SWEET); break;
            case 1: f.setTaste(Taste.SOUR); break;
            case 2: f.setTaste(Taste.SALTY); break;
            case 3: f.setTaste(Taste.BITTER); break;
        }
        f.setVeget(veget);
        fl.add (fl.size(), f);
    }
    public void eat(ArrayList<Food> foodList) {
        if (!foodList.isEmpty()) {
            Food f = foodList.get (foodList.size()-1);
            foodList.remove(foodList.size()-1);
            Alert alert = new Alert (Alert.AlertType.INFORMATION);
            alert.setTitle ("Вкусно!");
            alert.setHeaderText(null);
            alert.setContentText("Кажется, вкус этого блюда: " + f.tasteToString().toLowerCase()+"\n"+
                    "Овощ: "+ f.getVeget().vegetableToString().toLowerCase() +", цвет блюда: " + f.getVeget().colorToString().toLowerCase()+"\n"+
                    "В следующий раз приготовлю вкуснее");
            alert.showAndWait();
        }
    }
}

я понимаю, внутри метода private void checkArguments нужно проверять на несоответствие. Пример из листа:

private void checkIndex(int index) {
        if (index < 0 || index >= this.size) {
            throw new IndexOutOfBoundsException("Incorrect index output...");
        }
    }

как это применить к методу cook или eat ?

Answer 1

Ну в принципе любые проверки параметров делаются одинаково

void cook(ArrayList<Food> foodArrayList, String ItemName) {
    if (foodArrayList == null) {
        throw new IllegalArgumentException();
    }
    // or
    Objects.requireNonNull(foodArrayList); // throws NPE if null
    Random rand = new Random();
    int r = rand.nextInt(Taste.values().length);
    Taste t = Taste.values()[r];
    Food f = new Food(t, ItemName);
    foodArrayList.add(f);
}
Answer 2

Первый метод это проверка до передачи в метод, т.е. еще в источнике - валидация. Второй проверка и регистрация throw. http://sernam.ru/book_java.php?id=45

READ ALSO
Высота дочернего блока

Высота дочернего блока

Как в css сделать так, чтобы высота дочернего блока занимала всю высоту родительского? Высота родительского блока при этом не определена

170
:hover + :not - как оптимально реализовать?

:hover + :not - как оптимально реализовать?

Столкнулась со следующей проблемой, которую хотелось бы решить лаконичнее в одну строкуНеобходимо чтобы при наведении на пункты меню появлялось...

153
Скорость выполнения js скрипта

Скорость выполнения js скрипта

Есть скрипт "ход конем"

165