try{
clientes[indiceClientes++]=fabricarCliente();
}
catch(IllegalArgumentException e){
System.out.println(e.getMessage());
From makeCustomers(); a well-constructed client object or a propagated exception may arrive.
If the object arrives, the object is assigned to the array and then the index is increased. If an exception arrives, there is no allocation. The exception is caught in the catch but the index is increased.
Why does the index increase if the code sequence is supposed to have been broken?
Because you are still incrementing the index
clientes[indiceClientes++]=fabricarCliente();
, even though the flow is interrupted by the error, by that time the index has already been incremented.