The InvalidNumberInputClass does not throw an exception when invalid number of inputs are given. For example, I gave 10 inputs and it didn't throw an exception.
The program does work properly when the input is more than the amount of intended input, however, as you mention, it should throw exception instead. At first, the try-catch is covered the whole input retrieval (change separated input to the variable that will be used for the class creation) so that if the input is less than the amount intended, the InvalidNumberInputClass will invoke. Now, InvalidNumberInputClass will be thrown if the input amount not equal to 8. The bug is now resolved.