У меня есть этот код, который должен генерировать другое исключение с каждым экземпляром.
Vehicle[] parkingLot = new Vehicle[5];
try
{
// NEGATIVE INPUT
parkingLot[0] = new Truck(1200.0, 2000, "Chevrolet", -8, new Person());
// NULL MANUFACTURER
parkingLot[1] = new Vehicle("", 8, new Person("John"));
// NULL OWNER NAME
parkingLot[2] = new Vehicle("Mitsubishi", 6, new Person(""));
// TOW CAPACITY OVER 1500
parkingLot[3] = new Truck(1700.0, 1000, "Nissan", 6, new Person("Joe"));
// LOAD CAPACITY OVER 8600
parkingLot[4] = new Truck(1200.0, 9000, "Nissan", 6, new Person("Frank"));
}
catch(Exception e)
{
System.out.println(e.getMessage());
}
Поскольку значения, которые я использую для создания этих объектов, жестко закодированы, я не могу использовать цикл с чем-то вроде
parkingLot[index]
Итак, как я должен разработать свой код, чтобы, когда один экземпляр создает исключение, все еще предпринимаются попытки создать экземпляр остальных объектов?
Я думаю, что правильное решение - использовать отдельные попытки... блокировать блоки. НО только для вызова этот код (java 8) может делать то, что вы хотели:
Callable[] initializers = {
// NEGATIVE INPUT
() -> parkingLot[0] = new Truck(1200.0, 2000, "Chevrolet", -8, new Person()),
// NULL MANUFACTURER
() -> parkingLot[1] = new Vehicle("", 8, new Person("John")),
// NULL OWNER NAME
() -> parkingLot[2] = new Vehicle("Mitsubishi", 6, new Person("")),
// TOW CAPACITY OVER 1500
() -> parkingLot[3] = new Truck(1700.0, 1000, "Nissan", 6, new Person("Joe")),
// LOAD CAPACITY OVER 8600
() -> parkingLot[4] = new Truck(1200.0, 9000, "Nissan", 6, new Person("Frank"))
};
for (Callable i : initializers) {
try {
i.call();
} catch (Exception ex) {
System.out.println(e.getMessage());
}
}