Do...while 在输入验证中不起作用

Do...while is not working in input verification

所以我正在尝试对 java 中的程序进行输入验证,并且我正在尝试在此 setter:

中进行验证
  public void setClientName(String clientName) {
        boolean valid;
        do{
            valid = false;
            try{
                 if(clientName.matches("[a-zA-Z]+")){
                    this.clientName = clientName;
                 }else{
                     throw new IllegalArgumentException("Invalid client name");
                 }
            }catch(Exception e){
                System.out.println("Invalid name");
                valid = true;
            }
        }while(!valid);
    }

但是当我调用它并输入错误的名称时,do...while 不起作用,程序继续运行

这里是我的名字

  public void openAccount(int i){
        nCartao = 2021120040 + i;
        System.out.println("Account Number : " + (nCartao));
        System.out.println("Client Name :");

        setClientName(sc.next()); // I CALL IT HERE

        System.out.println("Client Age : ");
        age = sc.nextInt();
        System.out.println("Balance :");
        balance = sc.nextInt();
    }

我做错了什么?

也许那是因为在你的捕获中你说 validtrue 而它应该是 false 来重复这个块。