Я учусь делать свои собственные исключения в Java прямо сейчас и смотрю на эту страницу руководства как на ссылку (https://www.tutorialspoint.com/java/java_exceptions.htm)) и пытаюсь максимально адаптировать то, что они сделали, к тому, что я хочуПрежде всего, у меня есть программа, которая принимает данные от моего пользователя. Чтобы убедиться, что мой пользователь вводит только правильные варианты, мне нужно выдать исключение, когда они пытаются заказать недопустимый тип транспортного средства.
Когда я пытаюсь скомпилировать мою программу, я получаю следующую ошибку:
Orders.java:25: error: unreported exception InvalidUserInputException; must be caught or declared to be thrown
orderNewVehicle(Orders);
^
внутри основного метода:
try{
orderNewVehicle(Orders);
} catch (InvalidUserInputException e){
System.out.println("You've requested an invalid vehicle type. Please only enter " + e.getValidVehicles());
orderNewVehicle(Orders);
}
orderNewVehicle метод, который должен вызвать мое исключение:
public static void orderNewVehicle(ArrayList listOfOrders) throws InvalidUserInputException{
String vehicleType = "";
System.out.print("Do you want to order a Truck (T/t), Car (C/c), Bus(M/m), Zamboni(Z/z), or Boat(B/b)? ");
Boolean validVehicle = false;
while(validVehicle.equals(false)) {
Scanner scan = new Scanner(System.in);
String potentialInput = scan.next();
if(!(potentialInput.equals("c") || potentialInput.equals("C") || potentialInput.equals("t") || potentialInput.equals("T") || potentialInput.equals("b") || potentialInput.equals("B") || potentialInput.equals("m") || potentialInput.equals("M") || potentialInput.equals("z") || potentialInput.equals("Z"))) {
// System.out.print("Invalid input. Only enter c/C for Car, t/T for Truck, m/M for Bus, z/Z for Zamboni, or b/B for Boat. Please Try Again: ");
scan.nextLine(); //Clear carriage return if one present
throw new InvalidUserInputException();
} else {
validVehicle = true;
vehicleType = potentialInput;
scan.nextLine();
}
}
System.out.println("");
// stuff that happens once we get past the input check
}
мой класс исключений:
public class InvalidUserInputException extends Exception {
private String vehicleTypes = "c/C for Car, t/T for Truck, m/M for Bus, z/Z for Zamboni, or b/B for Boat";
public InvalidUserInputException() {
}
public String getValidVehicles() {
return vehicleTypes;
}
}