Это не правильный способ сделать это. Во-первых, нет ничего исключительного в том, что пользователь что-то неправильно набирает. Во-вторых, этот метод расширения может вызываться глубоко вложенным в некоторый код, который работает, скажем, с базой данных. У вас есть , чтобы поймать исключение, поскольку ошибка при печати является нормальной. Но теперь у вас также есть бремя написания обработчика исключений и набора кода, который правильно восстанавливает состояние программы.
Подтверждение пользовательского ввода должно произойти рано, до того, как вы запустите последовательность кода, которую трудно остановить. И нет никаких причин использовать исключения при проверке пользовательского ввода, простой оператор if () выполняет свою работу.
Теперь вы можете оставить инструкцию throw на месте, если вы хотите, это делает диагностику лучше. Но вы никогда не должны обрабатывать это исключение, потому что теперь оно диагностирует ошибку в вашем коде. И вы не можете исправлять ошибки с предложениями catch.