Как реализовать пользовательское исключение для ввода пользователем

#java #exception

Вопрос:

Это мой метод, в котором я прошу пользователя ввести имя, фамилию и т.д. Нового пользователя: Как реализовать исключение здесь, чтобы, если пользователь введет целое число, показать ему исключение для имени и фамилии?

  @Override
public void addNewPassenger(ArrayList<Passenger> passengersList) {

    System.out.println("Creating new passenger!");

    System.out.print("Add ID of passenger: ");
    passenger.setId(scanner.nextInt());
    scanner.nextLine();

    System.out.print("Add name of passenger: ");
    passenger.setFirstName(scanner.nextLine());

    System.out.print("Add last name of passenger: ");
    passenger.setLastName(scanner.nextLine());

    System.out.print("Add email of passenger: ");
    passenger.setEmail(scanner.nextLine());

    System.out.print("Add balance of passenger: ");
    passenger.setBalance(scanner.nextDouble());


    System.out.println("You added a new passenger!");


    passengersList.add(passenger);
}
 

Также у меня есть пассажир класса, где с этими полями и геттерами и сеттерами офк.

Я хочу создать класс, который будет содержать исключения, а затем в этом классе создать метод для проверки исключения в случае, если пользователь вводит число вместо буквы.

Я уже видел несколько примеров, но ни один из них не показывает, как создать специальный класс для исключений, а затем использовать специальные методы для исключений, когда пользователь вводит цифры вместо букв, буквы вместо цифр и т. Д.

Ответ №1:

Вы можете определить новый класс исключений:

 class NoNumbersException extends Exception
{
    NoNumbersException(){ 
        super("You can not enter numbers here."); 
    }
}
 

Когда вы нажмете на незаконный ввод (например, «1»), вы можете создать исключение:

 public static void main (String[] args) throws java.lang.Exception
{
    Scanner scanner = new Scanner(System.in);
    
    try{
        System.out.print("Add name of passenger: ");
        String name = scanner.nextLine();
        if (name.contains("1")) {
            throw new NoNumbersException();
        }
    } catch(NoNumbersException nne) {
        System.out.println(nne.getMessage());
    }
}